我正在尝试使用GridView并从单击的行中获取数据.我已经尝试了下面的代码,当我单击该行时,我返回所选索引,但当我查看GridView中的实际行时,它们显示为空.不确定我错过了什么.
.ASP制作我的网格.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True"
CssClass="datatables" Width="100%"
DataSourceID="SqlDataSource1"
GridLines="None" ShowFooter="True" AllowSorting="True"
onrowcreated="GridView1_RowCreated"
onrowdatabound="GridView1_RowDataBound" ShowHeaderWhenEmpty="True"
onrowcommand="GridView1_RowCommand"
onselectedindexchanged="GridView1_SelectedIndexChanged">
<HeaderStyle CssClass="hdrow" />
<RowStyle CssClass="datarow" />
<PagerStyle CssClass="cssPager" />
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
在每行数据绑定上,我确保单击应设置所选索引.
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(GridView1, "Select$" + e.Row.RowIndex);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当所选索引通过单击此更改被触发时,我可以在第一行放置断点,并且我看到我点击的索引存储在a中.然而,当我到达foreach时,它会跳过它,因为它显示GridView1的Count为0行.理论上它应该有几百行,当索引匹配时,它应该抓取第6个单元格中的数据并将其存储在字符串b中.为什么我的点击没有行?
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
int a = GridView1.SelectedIndex
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowIndex == a)
{
b = row.Cells[6].Text;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的页面加载.
protected void …Run Code Online (Sandbox Code Playgroud) 当我有一个具有OnClick事件的行内的按钮时,如何获取GridView行的DataKeyName的值.在我的按钮的OnClick事件中,我想获得按钮所在行的DataKeyName.
这可能吗?
<asp:GridView ID="myGridView" run="server">
<Columns>
<asp:TemplateField HeaderText="Column 1">
<ItemTemplate>
... bunch of html codes
<asp:Button ID="myButton" UseSubmitBehavior="false" runat="server" Text="Click Me" onclick="btnClick_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
在我的代码隐藏中
protected void btnClick_Click(object sender, EventArgs e)
{
// How can I get the DataKeyName value of the Row that the Button was clicked?
}
Run Code Online (Sandbox Code Playgroud)