获取GridView的列值
本文关键字:GridView 获取 | 更新日期: 2023-09-27 18:24:41
我有一个带有"删除"按钮的GridView。我需要获取索引[3]的列或单元格的值。但对于GridView1.SelectedRow.Cells[3].Text;
,它返回null。有人帮我吗?我不想使用javascript。
我的aspx:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" GridLines="None"
CssClass="table table-bordered table-striped">
<Columns>
<asp:BoundField DataField="DisplayName" HeaderText="Display Name" />
<asp:BoundField DataField="UserName" HeaderText="User Name" />
<asp:BoundField DataField="Email" HeaderText="Email" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnDelete" runat="server" Text="Delete" OnClick="btnDelete_OnClick" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我的.cs:
protected void btnDelete_OnClick(object sender, EventArgs e)
{
using (objConexao = new SqlConnection(strStringConexao))
{
SqlConnection oConn = new SqlConnection();
SqlCommand oCommand = new SqlCommand();
string strConn = ConfigurationManager.ConnectionStrings["XXX"].ConnectionString;
oConn.ConnectionString = strConn;
oCommand.Connection = oConn;
oCommand.CommandText = "proc_Delete";
oCommand.CommandType = CommandType.StoredProcedure;
SqlParameter myParam = oCommand.Parameters.Add("@UserRequestor", SqlDbType.NVarChar);
myParam.Value = User;
SqlParameter myParam2 = oCommand.Parameters.Add("@UserName", SqlDbType.NVarChar);
myParam2.Value = GridView1.Columns[3].ToString();
oConn.Open();
oCommand.ExecuteNonQuery();
oConn.Close();
}
}
试试这个:
protected void btnDelete_OnClick(object sender, EventArgs e)
{
Button btn = (Button)sender;
GridViewRow row = (GridViewRow)btn.NamingContainer
string desiredText = row.Cells[3].Text;
using (objConexao = new SqlConnection(strStringConexao))
{
// ...
myParam2.Value = desiredText;
// ...
}
}
NamingContainer
将为您获取点击的Button
的行
我认为SelectedRow
属性不起作用,因为单击按钮并不构成选择行。这是通过按钮上的CommandName="Select"
或GridView
上的AutoGenerateSelectButton="true"
来完成的。这个问题提供了一个解释。
这已经有一段时间了,但我知道你可以使用datakeynames。
在标记中,为要访问的任何值添加一个密钥
<asp:GridView ID="GridView1" DataKeyNames="Email" runat="server" AutoGenerateColumns="false" GridLines="None"
CssClass="table table-bordered table-striped">
然后,您应该能够获得具有行索引的值。
GridView1.DataKeys[3].Value.ToString()
已经有一段时间了,所以你可能不得不玩这个。
这是一篇文章,提供了更多信息,以及如何拥有多个数据密钥