为什么我的datagrid中的修改按钮要按两次才变? 其实就是一个简单的datagrid中的修改功能.点击"修改",按钮就变为""和"取消",原来datagrid中的label就变成textbox,修改完后按"保存"进行存储.按为什么要点击两次"修改",按钮和label才会变的?正常应该是一按就变才对.追踪代码,发觉按第二次"修改"的时候,就运行了update函数,然后按"保存"的时候又运行一次,晕,为什么会这样呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 aspx: <asp:datagrid ID="NeedArrayGrid" runat="server" DataSourceID="tmp_pay" AllowPaging="True" AutoGenerateColumns="False" PageSize="5" OnEditCommand="NeedArrayGrid_Edit" OnCancelCommand="NeedArrayGrid_Cancel" OnUpdateCommand="NeedArrayGrid_Update" DataKeyField="keyid"> <columns> <asp:EditCommandColumn CancelText="取消" EditText="修改" UpdateText="保存" ButtonType="PushButton"></asp:EditCommandColumn> <asp:BoundColumn HeaderText="序号" DataField="keyid" ReadOnly="True"/> <asp:BoundColumn HeaderText="连接序号" DataField="user_payApp_key" ReadOnly="True"/> <asp:BoundColumn HeaderText="提交日期" DataField="ApplyDate" ReadOnly="True"/> <asp:BoundColumn HeaderText="期间" DataField="period" ReadOnly="True"/> <asp:BoundColumn HeaderText="公司" DataField="CompanyName" ReadOnly="True"/> <asp:TemplateColumn HeaderText="金额"> <ItemTemplate> <asp:Label ID="accountLab" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.payAmount") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="account" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.payAmount") %>'></asp:TextBox> </EditItemTemplate> </asp:TemplateColumn> </columns> </asp:datagrid><asp:SqlDataSource ID="tmp_pay" runat="server" ConnectionString="<%$ ConnectionStrings:cwxtConn %>" SelectCommand="SELECT keyid, user_payApp_key, DepartmentID, ApplyDate, period, PayMode, Memo, CompanyName, BankName, AccountNum, Purpose, LinkPerson, Tele, Fax, payAmount, Accountant, GeneralManager, CFO, DepartDirector, Proposer, item13, re FROM tmp_PayApply WHERE (re = 0)"> </asp:SqlDataSource> aspx.cs protected void NeedArrayGrid_Edit(Object sender, DataGridCommandEventArgs E) { try { NeedArrayGrid.EditItemIndex = (int)E.Item.ItemIndex ; } catch (System.Exception e) { } } protected void NeedArrayGrid_Cancel(Object sender, DataGridCommandEventArgs E) { try { NeedArrayGrid.EditItemIndex = -1; NeedArrayGrid.DataBind(); } catch (System.Exception e) { } } protected void NeedArrayGrid_Update(Object sender, DataGridCommandEventArgs E) { try { updateSql = "UPDATE tmp_PayApply SET " + "payAmount = @payAmount " + "WHERE keyid=@keyid and user_payApp_key = @user_payApp_key"; DBConn dbConn = new DBConn(); myConn = dbConn.DBConnection("cwxtConn"); myConn.Open(); keyId = int.Parse(E.Item.Cells[1].Text); user_payApp_key = int.Parse(E.Item.Cells[2].Text); payAmount = double.Parse(((TextBox)E.Item.FindControl("account")).Text); updateCmd = new SqlCommand(updateSql, myConn); updateCmd.Parameters.Add(new SqlParameter("@payAmount", payAmount)); updateCmd.Parameters.Add(new SqlParameter("@keyid", keyId)); updateCmd.Parameters.Add(new SqlParameter("@user_payApp_key", user_payApp_key)); updateCmd.ExecuteNonQuery(); myConn.Close();// NeedArrayGrid.EditItemIndex = -1; NeedArrayGrid.DataBind(); } catch (System.Exception e) { } } 找到原因了,edit那里忘记加databind();晕自己一个,看来.net和java还是不同的...... NeedArrayGrid.EditItemIndex = (int)E.Item.ItemIndex ;---------更改之后都要重新绑定的 有没有用。NET开发网站的框架,讨论一下 C#乱码问题,求助!!!! 急,连接DB问题,高分求 如何实现进度条动态更新? 如何用pictureBox1显示存在sql server 2000数据库中的图片 关于多表添加修改问题 C#事件中不使用EVENT关键字,效果为什么一样? 关于全局变量的内存占用问题 c#内存不足问题 二进制串行化成功,然而反串行化时发生异常,请求指点。 请问如何调试三层结构中逻辑层的代码? 如何将一个字符串格式的日期(yyyyMMddhhmmss),转化成一个DateTime型,在线等,谢谢
<asp:datagrid ID="NeedArrayGrid" runat="server" DataSourceID="tmp_pay" AllowPaging="True" AutoGenerateColumns="False" PageSize="5"
OnEditCommand="NeedArrayGrid_Edit" OnCancelCommand="NeedArrayGrid_Cancel" OnUpdateCommand="NeedArrayGrid_Update" DataKeyField="keyid">
<columns>
<asp:EditCommandColumn CancelText="取消" EditText="修改" UpdateText="保存" ButtonType="PushButton"></asp:EditCommandColumn>
<asp:BoundColumn HeaderText="序号" DataField="keyid" ReadOnly="True"/>
<asp:BoundColumn HeaderText="连接序号" DataField="user_payApp_key" ReadOnly="True"/>
<asp:BoundColumn HeaderText="提交日期" DataField="ApplyDate" ReadOnly="True"/>
<asp:BoundColumn HeaderText="期间" DataField="period" ReadOnly="True"/>
<asp:BoundColumn HeaderText="公司" DataField="CompanyName" ReadOnly="True"/>
<asp:TemplateColumn HeaderText="金额">
<ItemTemplate>
<asp:Label ID="accountLab" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.payAmount") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="account" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.payAmount") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
</columns>
</asp:datagrid><asp:SqlDataSource ID="tmp_pay" runat="server" ConnectionString="<%$ ConnectionStrings:cwxtConn %>"
SelectCommand="SELECT keyid, user_payApp_key, DepartmentID, ApplyDate, period, PayMode, Memo, CompanyName, BankName, AccountNum, Purpose, LinkPerson, Tele, Fax, payAmount, Accountant, GeneralManager, CFO, DepartDirector, Proposer, item13, re FROM tmp_PayApply WHERE (re = 0)">
</asp:SqlDataSource>
{
try
{
NeedArrayGrid.EditItemIndex = (int)E.Item.ItemIndex ;
}
catch (System.Exception e)
{
}
} protected void NeedArrayGrid_Cancel(Object sender, DataGridCommandEventArgs E)
{
try
{
NeedArrayGrid.EditItemIndex = -1;
NeedArrayGrid.DataBind();
}
catch (System.Exception e)
{ }
} protected void NeedArrayGrid_Update(Object sender, DataGridCommandEventArgs E)
{
try
{
updateSql = "UPDATE tmp_PayApply SET " +
"payAmount = @payAmount " +
"WHERE keyid=@keyid and user_payApp_key = @user_payApp_key"; DBConn dbConn = new DBConn();
myConn = dbConn.DBConnection("cwxtConn");
myConn.Open();
keyId = int.Parse(E.Item.Cells[1].Text);
user_payApp_key = int.Parse(E.Item.Cells[2].Text);
payAmount = double.Parse(((TextBox)E.Item.FindControl("account")).Text);
updateCmd = new SqlCommand(updateSql, myConn);
updateCmd.Parameters.Add(new SqlParameter("@payAmount", payAmount));
updateCmd.Parameters.Add(new SqlParameter("@keyid", keyId));
updateCmd.Parameters.Add(new SqlParameter("@user_payApp_key", user_payApp_key)); updateCmd.ExecuteNonQuery();
myConn.Close();
// NeedArrayGrid.EditItemIndex = -1;
NeedArrayGrid.DataBind();
}
catch (System.Exception e)
{ }
}
---------
更改之后都要重新绑定的