当前位置:编程学习 > C#/ASP.NET >>

DataGrid中的删除按钮不触发删除事件,为什么呢?请大家帮帮忙,在线等~~急!!!谢谢~~

html中:
<DIV style="DISPLAY: inline; Z-INDEX: 101; LEFT: 88px; OVERFLOW: auto; WIDTH: 440px; POSITION: absolute; TOP: 416px; HEIGHT: 168px"
ms_positioning="FlowLayout"><asp:datagrid id="DataGrid2" runat="server" AutoGenerateColumns="False" Height="144px" Width="424px">
<Columns>
<asp:BoundColumn DataField="StoreCD" HeaderText="店CD"></asp:BoundColumn>
<asp:BoundColumn DataField="StoreName" HeaderText="店名"></asp:BoundColumn>
<asp:BoundColumn DataField="WeekDay" HeaderText="曜日"></asp:BoundColumn>
<asp:BoundColumn DataField="UpPrice" HeaderText="アップ額"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="削除">
<ItemTemplate>
<asp:Button id="delete" runat="server" Text="削除"             CommandName="delete"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid></DIV>


在DataGrid2的事件中双击ItemCommand选项。如下:

private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string myconn="server=172.18.1.21;database=dbkintai;uid=sa;pwd=";
SqlConnection conn=new SqlConnection(myconn);
int CD=Convert.ToInt32(e.Item.Cells[0].Text.Trim().ToString());
// string weekday=e.Item.Cells[2].Text.Trim().ToString();

string SQLStatement="delete from T_M_HourlyWageUp1 Where StoreCD ="+CD;

SqlCommand   mycommand=new   SqlCommand(SQLStatement,conn);   
conn.Open();   
mycommand.ExecuteNonQuery();   
conn.Close();
DataGrid2.EditItemIndex = -1;
DataGrid2.DataBind(); 
}
--------------------编程问答-------------------- if(e.CommandName=="Delete")
{
    string   myconn="server=172.18.1.21;database=dbkintai;uid=sa;pwd=";
    SqlConnection   conn=new   SqlConnection(myconn);
    int   CD=Convert.ToInt32(e.Item.Cells[0].Text.Trim().ToString());
    // string   weekday=e.Item.Cells[2].Text.Trim().ToString();

    string   SQLStatement="delete   from   T_M_HourlyWageUp1   Where   StoreCD   ="+CD;

    SqlCommand       mycommand=new       SqlCommand(SQLStatement,conn);      
    c onn.Open();      
    mycommand.ExecuteNonQuery();      
    conn.Close();
    DataGrid2.EditItemIndex   =   -1;
    DataGrid2.DataBind();   
} --------------------编程问答-------------------- 我试了,这样还是不能触发删除事件,哪个地方出错了呢?
--------------------编程问答-------------------- 修改

<asp:DataGrid ...... onDeleteCommand="myDelete" DataKeys="" ...>
<Columns>
<asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>
</Column>
</asp:DataGrid>


之后编写 myDelete事件 --------------------编程问答-------------------- if(e.CommandName=="delete") 
--------------------编程问答-------------------- 谢谢楼上的。

用以上我写的代码在另一个.net文件中就能正常执行,可再把这段代码和相关设置放到其他的文件中就不能触发事件,觉得非常奇怪,大家能帮我找以下原因吗?

我想用DataGrid的模板列,添加一个服务器端按钮,进行删除,以上的代码为什么不正确呢? --------------------编程问答-------------------- 定义的是DataGrid2,可cs中是DataGrid1_ItemCommand。。。。 --------------------编程问答-------------------- 呵呵,谢谢,刚才我也发现这个问题了,但是该过来后还是不行啊。郁闷~~~~~ --------------------编程问答--------------------  OnItemCommand="DataGrid1_ItemCommand"你加了没? --------------------编程问答-------------------- html中: 
<DIV   style="DISPLAY:   inline;   Z-INDEX:   101;   LEFT:   88px;   OVERFLOW:   auto;   WIDTH:   440px;   POSITION:   absolute;   TOP:   416px;   HEIGHT:   168px" 
ms_positioning="FlowLayout"> <asp:datagrid   id="DataGrid1"   runat="server"   AutoGenerateColumns="False"   Height="144px"   Width="424px" OnItemCommand="DataGrid1_ItemCommand"> 
<Columns> 
<asp:BoundColumn   DataField="StoreCD"   HeaderText="店CD"> </asp:BoundColumn> 
<asp:BoundColumn   DataField="StoreName"   HeaderText="店名"> </asp:BoundColumn> 
<asp:BoundColumn   DataField="WeekDay"   HeaderText="曜日"> </asp:BoundColumn> 
<asp:BoundColumn   DataField="UpPrice"   HeaderText="アップ額"> </asp:BoundColumn> 
<asp:TemplateColumn   HeaderText="削除"> 
<ItemTemplate> 
<asp:Button   id="delete"   runat="server"   Text="削除"                           CommandName="delete"> </asp:Button> 
</ItemTemplate> 
</asp:TemplateColumn> 
</Columns> 
</asp:datagrid> </DIV> 


在DataGrid2的事件中双击ItemCommand选项。如下: 

private   void   DataGrid1_ItemCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e) 

if(e.CommandName=="delete") 
{
    string   myconn="server=172.18.1.21;database=dbkintai;uid=sa;pwd="; 
SqlConnection   conn=new   SqlConnection(myconn); 
int   CD=Convert.ToInt32(e.Item.Cells[0].Text.Trim().ToString()); 
// string   weekday=e.Item.Cells[2].Text.Trim().ToString(); 

string   SQLStatement="delete   from   T_M_HourlyWageUp1   Where   StoreCD   ="+CD; 

SqlCommand       mycommand=new       SqlCommand(SQLStatement,conn);       
conn.Open();       
mycommand.ExecuteNonQuery();       
conn.Close(); 
DataGrid2.EditItemIndex   =   -1; 
DataGrid2.DataBind(); 
}
  

这样清楚了把 --------------------编程问答-------------------- 不好意思,这样运行出错。
大体意思是DataGrid1_ItemCommand被保护,不能调用。 --------------------编程问答-------------------- 解决了。
这些代码都没错,是错在页面加载时。
谢谢。 --------------------编程问答-------------------- 请注意。Page_Load方法中一定要加上
if (!Page.IsPostBack)
        {}
--------------------编程问答-------------------- Grodview有ItemCommand吗,,我没用过,一般都是用rowCommand事件的 --------------------编程问答-------------------- <asp:TemplateColumn HeaderText="削除">  在这里先加 CommandName="Delete"


再根据一楼的兄弟说的那样试咯
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,