我在gridview中有一个按钮,当我点击按钮时,我需要获取该按钮的文本值(每行不同)。
我是否可以使用gridview事件,因此我可以获取后面代码中单击的按钮行?
<asp:GridView ID="gvResults" runat="server" Width="100%" AllowSorting="True" OnSorting="gvResults_Sorting" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="Customer Type">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CustType") %>' CommandName="Delete" />
<%-- <a href="javascript:sendval('<%# DataBinder.Eval(Container.DataItem, "CustType") %>');"><%# DataBinder.Eval(Container.DataItem, "CustType") %></a>--%>
</ItemTemplate>
</asp:TemplateField>
答案 0 :(得分:4)
您可以使用GridView控件的RowCommand事件。
protected void gvResults_RowCommand(object sender,
GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
// Retrieve the row index stored in the
// CommandArgument property.
int index = Convert.ToInt32(e.CommandArgument);
// Retrieve the row that contains the button
// from the Rows collection.
GridViewRow row = gvResults.Rows[index];
// Add your code here
}
}
您可以将CommandArgument
设置为
<asp:Button ID="Button1"
runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "CustType") %>'
CommandName="Delete"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" />
绑定事件,如
<asp:GridView ID="gvResults" OnRowCommand="gvResults_RowCommand"
答案 1 :(得分:0)
代码如下:
在.aspx
<asp:GridView ID="GridView1" Width="100%" AutoGenerateSelectButton="false" runat="server" AllowPaging="true" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Customer Type">
<ItemTemplate>
<asp:Button runat="server" ID="button1" Text='<%#Eval("TenLop") %>' OnClick="Button1_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
在代码背后
protected void Button1_Click(object sender, EventArgs e)
{
Button button = sender as Button;
TextBox1.Text = button.Text;
}
希望得到这个帮助。
答案 2 :(得分:0)
如果您的目的只是获取所单击按钮的Text
值,请先添加click事件处理程序,以便在单击该按钮时执行Button1_Click
方法:
<asp:Button ID="Button1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CustType") %>' OnClick="Button1_Click" />
然后在Text
方法中获取Button1_Click
值,如下所示:
protected void Button1_Click(object sender, EventArgs e)
{
// get the clicked button text value
string buttonText = ((Button)sender).Text;
}
答案 3 :(得分:0)
如果可能,请不要使用DataBinder.Eval,因为这样的表达式是使用反射进行后期绑定的,并且会对性能产生负面影响: -
http://www.devcurry.com/2011/02/how-to-avoid-databindereval-in-aspnet.html