小弟用gridview来显示网格数据,设置了gridview的属性DataKeyNames="ID",并设置<asp:ButtonField CommandName="Delete" Text="删除" />,当点删除按钮时想获取删除行的索引值long id=Convert.ToInt64(this.del_info.DataKeys[e.RowIndex]);然后根据这个索引值来执行删除操作,但是编译时出错如题,这是怎么回事啊?
调试欢乐多
你可以在Delete事件中这样写呀this.gridView.Rows.DeleteRow(e.RowIndex)不需要获取索引值吗
多半是因为你的SQL有问题
就比如说你指定ID为索引 你的ID=5
其实你的gridview里面只有3行!或者只有1行!这会你删除或者编辑时!就抱索引超出范围。必须为非负值并小于集合大小
CREATE PROCEDURE DeleteinfoByID
(
@ID bigint
)
as
delete from [info_table] where [ID]=@ID
GO
二:gridview结构:
<asp:GridView ID="del_webaddress_info" runat="server" AutoGenerateColumns="False" GridLines="None" ShowHeader="False" PageSize="2" AllowPaging="true" OnPageIndexChanging="del_webaddress_data_show_OnPageIndexChanging" OnRowDeleting="del_webaddress_info_rowdeleting" DataKeyNames="ID">
<Columns>
<asp:TemplateField>
<ItemTemplate>
........ </ItemTemplate>
</asp:TemplateField>
<asp:ButtonField CommandName="Delete" Text="删除记录" ButtonType="Link" ShowHeader="false" />
</Columns>
</asp:GridView>
三:删除事件
protected void del_webaddress_info_rowdeleting(object sender,GridViewDeleteEventArgs e)
{
//找到要删除的ID号!
long id=Convert.ToInt64(this.del_webaddress_info.DataKeys[e.RowIndex]["ID"].ToString());
......
}
求各位大虾了.