总体的功能是通过一个datagrid来显示记录的几个字段,通过点击datagrid里的记录来在另外的文件框中显示出记录的全部字段内容,datagrid的第一列是删除列,是这样实现的
public void dgrd1_ItemCreated(object s,System.Web.UI.WebControls.DataGridItemEventArgs e)
{
switch (e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
case ListItemType.EditItem:
TableCell myTableCell;
myTableCell = e.Item.Cells[0];
LinkButton myDeleteButton ;
myDeleteButton = (LinkButton)myTableCell.Controls[0];
myDeleteButton.Attributes.Add("onclick","javascript:return window.confirm('确定删除吗?');");
myDeleteButton.Text = "删除";
break;
}
}
另外有一个模版列,实现点击后把当前记录的内容显示在文本框内
public void dgrd1_ItemCommand(object s,DataGridCommandEventArgs e)
{
string strId; strId = dgrd1.DataKeys[e.Item.ItemIndex].ToString();
dgrd1.SelectedIndex = e.Item.ItemIndex;
Session["flag"] = "";
if (e.CommandName!="Delete")
{
txtId.ReadOnly=true;
BindDetail(strId);
}
}
现在出现一个这样的问题
当我第一次选择一条记录时,显示正常,接着选另外一条记录的时候,datagrid里面前一次选择的记录那行的删除列没有了
请问这是什么原因造成的,请教解决的方法
public void dgrd1_ItemCreated(object s,System.Web.UI.WebControls.DataGridItemEventArgs e)
{
switch (e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
case ListItemType.EditItem:
TableCell myTableCell;
myTableCell = e.Item.Cells[0];
LinkButton myDeleteButton ;
myDeleteButton = (LinkButton)myTableCell.Controls[0];
myDeleteButton.Attributes.Add("onclick","javascript:return window.confirm('确定删除吗?');");
myDeleteButton.Text = "删除";
break;
}
}
另外有一个模版列,实现点击后把当前记录的内容显示在文本框内
public void dgrd1_ItemCommand(object s,DataGridCommandEventArgs e)
{
string strId; strId = dgrd1.DataKeys[e.Item.ItemIndex].ToString();
dgrd1.SelectedIndex = e.Item.ItemIndex;
Session["flag"] = "";
if (e.CommandName!="Delete")
{
txtId.ReadOnly=true;
BindDetail(strId);
}
}
现在出现一个这样的问题
当我第一次选择一条记录时,显示正常,接着选另外一条记录的时候,datagrid里面前一次选择的记录那行的删除列没有了
请问这是什么原因造成的,请教解决的方法
indexchange要写在哪里?写些什么内容
我已经在itemcommand里面判断了,如果点的时删除就不会执行显示的代码,删除的代码都没有问题
以下是删除的代码
public void dgrd1_Delete(object s,DataGridCommandEventArgs e)
{
string strId;
SqlCommand cmmDel;
string strDel; strId = dgrd1.DataKeys[e.Item.ItemIndex].ToString();
dgrd1.SelectedIndex = e.Item.ItemIndex; strDel = "delete authors where au_id = @strId";
cmmDel = new SqlCommand(strDel,conn);
cmmDel.Parameters.Add("@strId",strId); conn.Open();
cmmDel.ExecuteNonQuery();
conn.Close();
Binddgrd1();
}
我想问题可能出在datagrid几个事件执行顺序的问题,你试着在几个事件中都设个断点一步步调试一下看看,我觉得这个应该不是那么复杂的!