我有一DataGrid如下: <ASP:DATAGRID id="MyDataGrid" runat="server" AutoGenerateColumns="False" CellPadding="3" BackColor="White" >

<Columns>
<asp:TemplateColumn  HeaderText="编号">

<ItemTemplate>
<asp:Label id="Label1" Text='<%#DataBinder.Eval(Container, "DataItem.myno").ToString()%>' Runat="server">
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="操作">
<ItemTemplate>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</ASP:DATAGRID>
后台: string abc; .........protected void MyDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if(e.Item.ItemIndex == 0)
{
abc = ((Label)MyDataGrid.Items[0].FindControl("Label1")).Text;
Button bt = new Button();
bt.Text = "删除";
bt.Click += new EventHandler(test);
        e.Item.Cells[1].Controls.Add(bt);
         }

}

protected void test(object sender, EventArgs e)
{
Response.Write(abc);

}abc = ((Label)MyDataGrid.Items[0].FindControl("Label1")).Text;
这行说索引出错, 我的datagrid数据源,有一条记录.还出错??
点击删除,并不能执行test里的代码.我现在只加了一个输出.

解决方案 »

  1.   

    還有頭沒判斷
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      

  2.   

    abc = ((Label)e.Item.FindControl("Label1")).Text;
      

  3.   

    protected void MyDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
                          if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem){ abc = ((Label)e.Item.Cells[0]FindControl("Label1")).Text;
    Button bt = new Button();
    bt.Text = "删除";
    bt.Click += new EventHandler(test);
            e.Item.Cells[1].Controls.Add(bt);
             }

    }
      

  4.   

    你直接用if(e.item.itemindex>=0)判断
      

  5.   

            单击删除按键并不能执行test函数??