日期:2014-05-18  浏览次数:20495 次

初学ASP.net,使用DataGrid的两个问题

sql= "select   name,sex...   from   table1 ";

由于table1里字段sex(性别)存储的是代码1和2(1代表男,2代表女)

希望显示在DBGrid里,sex列显示的是男和女,而不是1和2,

因此写代码如下;

private   void   DataGrid1_ItemDataBound(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)
{
        if   ((e.Item.ItemType   ==   ListItemType.Item)   ||   (e.Item.ItemType   ==   ListItemType.AlternatingItem))
        {
                if   (e.Item.Cells[0].Text   ==   "1 ")
                {
                        e.Item.Cells[0].Text   =   "男 ";
                }
                else
                {
                        e.Item.Cells[0].Text   =   "女 ";
                }
        }
}


      如果增加 "编辑、更新、取消 "列,发现有一个问题:

      运行时,点击 "编辑 "按钮,进入编辑状态的那一行,“性别”列又显示为1/2,而非男/女。

      另一个问题,如果点击“编辑”按钮之后,未点击“更新”或“取消”按钮,而是直接

      点击“下一页”或“上一页”的话,新一页里的同一行同一列,将仍是处于编辑状态。

 可不可以,在编辑状态下,未保存或取消时,进入新一页自动取消?可以的话,如何写?

   


------解决方案--------------------
运行时,点击 "编辑 "按钮,进入编辑状态的那一行,“性别”列又显示为1/2,而非男/女。
----------------------------------------------------
在分页事件里 绑定数据


另一个问题,如果点击“编辑”按钮之后,未点击“更新”或“取消”按钮,而是直接
点击“下一页”或“上一页”的话,新一页里的同一行同一列,将仍是处于编辑状态。
 可不可以,在编辑状态下,未保存或取消时,进入新一页自动取消?可以的话,如何写?
=====================
还是分页里写 this.datagrid1.EditIndex = -1;


------解决方案--------------------
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)|| (e.Item.ItemType == ListItemType.EditItem))
{
if (e.Item.Cells[0].Text == "1 ")
{
e.Item.Cells[0].Text = "男 ";
}
else
{
e.Item.Cells[0].Text = "女 ";
}
}
///多加一个EditItem时的变化