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