首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET -在Gridview RowDeleting事件上没有数据键!

ASP.NET -在Gridview RowDeleting事件上没有数据键!
EN

Stack Overflow用户
提问于 2009-02-24 21:57:48
回答 3查看 17.7K关注 0票数 4

我有一个像这样的GridView:

代码语言:javascript
复制
<asp:GridView ID="gvwStudents" runat="server" 
    AutoGenerateColumns="False" DataKeyNames="ID"
    ShowHeader="False" onrowdeleting="gvwStudents_RowDeleting">
    <Columns>
        <asp:BoundField DataField="FirstName" />
        <asp:BoundField DataField="LastName" />
        <asp:BoundField DataField="Email" />
        <asp:CommandField ShowDeleteButton="True" DeleteText="Remove" />
    </Columns>
</asp:GridView>

下面是我如何创建GridView绑定的DataTable,这样您就可以知道我处理的是什么数据:

代码语言:javascript
复制
private DataTable MakeStudentsTable()
{
    DataTable students = new DataTable();

    DataColumn ID = students.Columns.Add("ID", typeof(int));
    ID.AutoIncrement = true;

    DataColumn firstName = students.Columns.Add("FirstName", typeof(string));
    DataColumn lastName = students.Columns.Add("LastName", typeof(string));
    DataColumn email = students.Columns.Add("Email", typeof(string));


    return students;
}

为什么,哦,为什么没有在RowDeleting事件的EventArgs中传递键呢?我需要从ADO.NET DataTable中删除在触发此事件时保持在会话状态中的记录。

为什么这不起作用?是不是只有在使用DataSource控件时DataKeys才能工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-25 06:31:43

这是可行的:

代码语言:javascript
复制
private DataTable MakeStudentsTable()
{
    DataTable students = new DataTable();

    DataColumn ID = students.Columns.Add("ID", typeof(int));
    ID.AutoIncrement = true;

    DataColumn firstName = students.Columns.Add("FirstName", typeof(string));
    DataColumn lastName = students.Columns.Add("LastName", typeof(string));
    DataColumn email = students.Columns.Add("Email", typeof(string));

    DataRow student = students.NewRow();
    student["FirstName"] = "foo";
    student["LastName"] = "bar";
    student["Email"] = "foo@bar.com";
    students.Rows.Add(student);

    return students;
}

protected void gvwStudents_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    string id = this.gvwStudents.DataKeys[e.RowIndex].Value.ToString();   
}
票数 8
EN

Stack Overflow用户

发布于 2016-09-02 23:18:11

将GridView控件的DataKeyNames属性设置为数据的主键的名称。

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeynames.aspx

票数 1
EN

Stack Overflow用户

发布于 2009-02-24 22:23:34

添加

代码语言:javascript
复制
<asp:BoundField DataField="ID" />

并查看该字段是否有值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/583796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档