问题
i want to get this value from webform 1 (admin side) when button is clicked:
here is my full viewcreditrequest code:
<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>
code behind:
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();
}
and pass it on to webform 2 (client side):
<asp:TextBox ID="txtCredit" runat="server"></asp:TextBox>
this is what i got so far:
admin side:
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnApprove" runat="server" Text="Approve" OnClick ="btnApprove_Click" />
</ItemTemplate>
</asp:TemplateField>
code behind:
protected void btnApprove_Click(object sender, EventArgs e)
{
//code for getting the boundfield "creditrequest" and if possible, store it in database for future use.
}
is there any way to get the creditrequest value from boundfield and store it in database?
回答1:
Here you can do two thing's 1.since
you are using Button, add a new row in gridview like this
<asp:TemplateField HeaderText="Actions">
<ItemTemplate>
<asp:Button CommandArgument='<%#Eval("CreditRequest") %>' runat="server" Text="View" ID="btnEdit" OnClick="btnEdit_OnClick"/>
</ItemTemplate>
</asp:TemplateField>
and the code behind is like this
protected void btnEdit_OnClick(object sender, EventArgs e)
{
if (sender != null)
{
string id = ((Button)sender).CommandArgument.ToString();
Response.Redirect("yourpagename.aspx?value=" + id);
}
}
and on another page Client side get the query string value like this
string value = Request.QueryString["value"])
And 2nd and easy method will be to use hyperlink instead of button like this
<asp:TemplateField HeaderText="Actions">
<ItemTemplate>
<asp:HyperLink runat="server" NavigateUrl='<%# Eval("CreditRequest", "~/yourpagename.aspx?value={0}") %>' Text="Edit" "></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
回答2:
Copy the code below EXACTLY as I'm showing and it will work. I've just tested on my computer:
.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>
Code behind:
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; }
}
来源:https://stackoverflow.com/questions/37497123/get-value-from-asp-boundfield-and-store-to-sql-database-via-button-click