日期:2014-05-19  浏览次数:20520 次

问dataGrid删除一行的ID问题
数据库字段:   ID     Name
                        1       AA
                        2       BB
                        3       CC
将数据库内容与DataGrid绑定.现在在页面上删除一行,如何使datagrid中的ID自动减小.比如删除第二行后.如何变成   1   AA
                                                              2   BB,     而不使1   AA  
                                                                                        3   BB


------解决方案--------------------
获取DataTable的时候 自己手动加一列 循环DataTable的数据行 将这一列的数据自动加1赋值 然后再绑定
------解决方案--------------------
加一列模板列:
<asp:TemplateColumn>
<ItemTemplate>
<%#Container.ItemIndex+1%>
</ItemTemplate>
</asp:TemplateColumn>
不要那个ID列了
------解决方案--------------------
ID那一列用模板列

<ASP:TEMPLATECOLUMN HeaderText= "ID ">
<ITEMTEMPLATE>
<%#((DataGridItem)Container).ItemIndex+1%>
</ITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
------解决方案--------------------
那你就别用数据库里的ID显示

用DataGrid的自动排序吧
<ASP:TEMPLATECOLUMN HeaderText= "ID ">
<ITEMTEMPLATE>
<%#((DataGridItem)Container).ItemIndex+1%>
</ITEMTEMPLATE>
</ASP:TEMPLATECOLUMN
------解决方案--------------------
这个分页也好用
================================
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemIndex > = 0)
{
e.Item.Cells[0].Text = Convert.ToString(e.Item.ItemIndex+1+DataGrid1.PageSize * DataGrid1.CurrentPageIndex);
}
}
// 在第一列显示序号
------解决方案--------------------
你的ID是主键吗,如果是,用sql在数据库中取数据的时候,ID照取,但是不绑定,把DataGrid1的DataKeyField属性设为ID

然后在选择一行时
string id = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
得到选中行的ID,然后用你上面的方法删除即可