asp.net - obtener valor de asp boundfield y almacenar en la base de datos sql con el botón clic?
textbox (2)
Quiero obtener este valor del formulario web 1 (lado del administrador) cuando se hace clic en el botón:
aquí está mi código de solicitud de crédito completo:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CssClass="table table-hover table-striped"
onselectedindexchanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="Username" HeaderText="Username"
SortExpression="Username" />
<asp:BoundField DataField="LastName" HeaderText="LastName"
SortExpression="LastName" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName"
SortExpression="FirstName" />
<asp:BoundField DataField="CompanyName" HeaderText="CompanyName"
SortExpression="CompanyName" />
<asp:BoundField DataField="EmailAddress" HeaderText="EmailAddress"
SortExpression="EmailAddress" />
<asp:BoundField DataField="CompanyAddress" HeaderText="CompanyAddress"
SortExpression="CompanyAddress" />
<asp:BoundField DataField="IncomeRange" HeaderText="IncomeRange"
SortExpression="IncomeRange" />
<asp:BoundField DataField="CreditRequest" HeaderText="CreditRequest"
SortExpression="CreditRequest" />
<asp:BoundField DataField="ContactNumber" HeaderText="ContactNumber" SortExpression="ContactNumber" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="Approve" CommandName="Approve" CommandArgument=''<%# Eval("CreditRequest") %>'' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
código detrás:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["IslandGasAdminFM"] != null)
{
bindgrid();
Label1.Text = "- Finance Manager";
}
else
{
Response.Write("<script>alert(''Finance Manager credentials needed''); window.location.href=''LogIn.aspx'';</script>");
}
}
public void bindgrid()
{
SqlConnection conn = new SqlConnection("Data Source = ''PAULO''; Initial Catalog=ShoppingCartDB;Integrated Security =True");
SqlCommand cmd = new SqlCommand("select * from CreditRequests ", conn);
SqlDataAdapter da = new SqlDataAdapter("", conn);
da.SelectCommand = new SqlCommand("select * from CreditRequests", conn);
DataSet ds = new DataSet();
da.Fill(ds, "data");
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();
}
y pasarlo a webform 2 (lado del cliente):
<asp:TextBox ID="txtCredit" runat="server"></asp:TextBox>
esto es lo que obtuve hasta ahora:
lado administrativo:
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnApprove" runat="server" Text="Approve" OnClick ="btnApprove_Click" />
</ItemTemplate>
</asp:TemplateField>
código detrás:
protected void btnApprove_Click(object sender, EventArgs e)
{
//code for getting the boundfield "creditrequest" and if possible, store it in database for future use.
}
¿hay alguna forma de obtener el valor de la solicitud de crédito de boundfield y almacenarlo en la base de datos?
Aquí puedes hacer dos cosas 1.since
que estás usando Button, agrega una nueva fila en gridview como esta
<asp:TemplateField HeaderText="Actions">
<ItemTemplate>
<asp:Button CommandArgument=''<%#Eval("CreditRequest") %>'' runat="server" Text="View" ID="btnEdit" OnClick="btnEdit_OnClick"/>
</ItemTemplate>
</asp:TemplateField>
y el código detrás es así
protected void btnEdit_OnClick(object sender, EventArgs e)
{
if (sender != null)
{
string id = ((Button)sender).CommandArgument.ToString();
Response.Redirect("yourpagename.aspx?value=" + id);
}
}
y en otra página, el lado del cliente obtiene el valor de la cadena de consulta como este
string value = Request.QueryString["value"])
Y el segundo y sencillo método será usar hipervínculo en lugar de un botón como este
<asp:TemplateField HeaderText="Actions">
<ItemTemplate>
<asp:HyperLink runat="server" NavigateUrl=''<%# Eval("CreditRequest", "~/yourpagename.aspx?value={0}") %>'' Text="Edit" "></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
Copie el código a continuación EXACTAMENTE como lo estoy mostrando y funcionará. Acabo de probar en mi computadora:
.ASPX:
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="CreditRequest" HeaderText="Credit Request" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button runat="server" Text="Approve" CommandName="Approve" CommandArgument=''<%# Eval("CreditRequest") %>'' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Código detrás:
public partial class delete_me : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)//THIS IS IMPORTANT.GridView1_RowCommand will not fire unless you add this line
{
var p1 = new Person() { Name = "Person 1",CreditRequest="Credit Request 1" };
var p2 = new Person() { Name = "Person 2",CreditRequest="Credit Request 2" };
var list = new List<Person> { p1, p2 };
GridView1.DataSource = list;
GridView1.DataBind();
}
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
System.Diagnostics.Debugger.Break();
if(e.CommandName == "Approve")
{
string creditRequest = e.CommandArgument as string;
}
}
}
public class Person
{
public string Name { get; set; }
public string CreditRequest { get; set; }
}