你的delete button是DATAGRID里每行都有还是只有一个?如果是后者,这么做
<form runat="server">
<input type="hidden" id="SelectedRow" value="-1" runat="Server" />
...
</form>....e.Item.Attributes["onclick"]="document.all('SelectedRow').value="+e.Item.ItemIndex.ToString ()+"; SetuserValue('"+e.Item.Cells[0].Text+"');if (obj == this) return; if (obj != null) obj.style.backgroundColor = ''; this.style.backgroundColor='#cccccc'; obj=this;";
....private void delete_Click(object sender, System.EventArgs e)
{
if (!isEditing)
{
int SelectedIndex = Convert.ToInt32(SelectedRow.Value);
if (SelectedIndex<=0)
{
Message.Text="请先选择要删除的!";
return;
} string keyValue = (string)DataGrid1.DataKeys[SelectedIndex]; .....
//重要!
SelectedRow.Value = "-1";
<form runat="server">
<input type="hidden" id="SelectedRow" value="-1" runat="Server" />
...
</form>....e.Item.Attributes["onclick"]="document.all('SelectedRow').value="+e.Item.ItemIndex.ToString ()+"; SetuserValue('"+e.Item.Cells[0].Text+"');if (obj == this) return; if (obj != null) obj.style.backgroundColor = ''; this.style.backgroundColor='#cccccc'; obj=this;";
....private void delete_Click(object sender, System.EventArgs e)
{
if (!isEditing)
{
int SelectedIndex = Convert.ToInt32(SelectedRow.Value);
if (SelectedIndex<=0)
{
Message.Text="请先选择要删除的!";
return;
} string keyValue = (string)DataGrid1.DataKeys[SelectedIndex]; .....
//重要!
SelectedRow.Value = "-1";
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html><head>
<script language="javascript">
var obj;</script>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
if(!IsPostBack)
{
SqlDataAdapter da = new SqlDataAdapter("select * from authors",
"Server=localhost;Database=pubs;UID=sa;PWD=;");
DataSet ds = new DataSet();
da.Fill(ds,"authors");
DataGrid1.DataSource = ds.Tables["authors"].DefaultView;
DataGrid1.DataBind();//Response.Write("****" + ((Table)DataGrid1.Controls[0]).Rows.Count.ToString() + "****");
}
}public void ItemCreated(Object sender, DataGridItemEventArgs e)
{
ListItemType itemType = e.Item.ItemType;
if (itemType == ListItemType.Item || itemType == ListItemType.AlternatingItem)
{ e.Item.Attributes["onclick"]="document.all('SelectedRow').value="+e.Item.ItemIndex.ToString ()+"; if (obj == this) return; if (obj != null) obj.style.backgroundColor = ''; this.style.backgroundColor='#cccccc'; obj=this;"; e.Item.Attributes["onmouseover"]="javascript:this.bgColor='#FFDDAA'";
e.Item.Attributes["onmouseout"]="javascript:this.bgColor='#FFFFF5'";
}
}private void delete_Click(object sender, System.EventArgs e)
{
int SelectedIndex = Convert.ToInt32(SelectedRow.Value); if (SelectedIndex <0)
{
Message.Text="请先选择要删除的!";
return;
} //在这里做你的数据库处理,重新绑定什么的,下面只是个示范,别用在你的编码里
Message.Text= "";
((Table)DataGrid1.Controls[0]).Rows.RemoveAt(SelectedIndex+1);
SelectedRow.Value = "-1";
}</script>
<form runat="server">
<input type="hidden" id="SelectedRow" value="-1" runat="Server" />
<asp:Label id="Message" runat="server" />
<asp:Button id="delete_Btn" runat="server" Text="Delete" onclick="delete_Click"/>
<asp:DataGrid id="DataGrid1" runat="server"
OnItemCreated="ItemCreated" AutoGenerateColumns="false">
<Columns>
<asp:BoundColumn HeaderText="Last Name"
ReadOnly="true"
DataField="au_lname"/> <asp:BoundColumn HeaderText="ID"
ReadOnly="true"
DataField="au_id"/>
</Columns>
</asp:DataGrid>
<asp:Button id="btn" runat="Server" text="submit" />
</form>