我有一个简单的gridview(现在好了)它填充,我可以编辑它。但是当谈到更新时,我无法让它发挥作用。
以下代码创建一个gridview,用于搜索名称以“c”开头的用户(这是我过滤掉的部分内容)
问题是当我点击更新按钮时它不会更新。调用存储过程但传递给它的所有参数都为空。因此数据库不会更新。
我知道这是一个简单的解决方案的简单问题,但我看不到它。
我尝试在onupdating事件中使用ExtractValuesFromCell
,但仍然只有空值。我不得不添加CausesValidation="false"
因为没有它,甚至都没有调用更新事件。
感谢任何和所有帮助
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" DataSourceID="SqlDataSource3"
DataKeyNames="UserId">
<Columns>
<asp:CommandField ShowEditButton="True" CausesValidation="false" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="MobileAlias" HeaderText="MobileAlias"
SortExpression="MobileAlias" />
<asp:BoundField DataField="DistrictId" HeaderText="DistrictId"
SortExpression="DistrictId" />
<asp:BoundField ReadOnly="true" DataField="UserId" HeaderText="UserId"
SortExpression="UserId" />
</Columns>
</asp:GridView> <asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:REMConnectionString_development_dev %>"
SelectCommand="LoadUser" SelectCommandType="StoredProcedure"
UpdateCommand="UpdateUser" UpdateCommandType="StoredProcedure"
onupdating="SqlDataSource3_Updating">
<SelectParameters>
<asp:Parameter DefaultValue="c" Name="UserName" Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="UserId" Type="String" />
<asp:Parameter Name="DistrictID" Type="Int32" />
<asp:Parameter Name="UserName" Type="String" />
<asp:Parameter Name="MobileAlias" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
代码隐藏中唯一的代码是
protected void SqlDataSource3_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
}
它就在那里,所以我可以放入一个断点并检查参数,这些参数都是空值
答案 0 :(得分:0)
其他必须在这里工作。我复制了你提供的代码,当我分解事件参数时,我看到了值,这一切都正常。你能编辑你的帖子并包含所有代码吗?
答案 1 :(得分:0)
好的,我有机会做更多的研究并证实了这个问题。
在Page_load
功能中设置主页ID是个问题。它需要在Page_Init
。
此页面提供了很好的解释 http://imar.spaanjaars.com/QuickDocId.aspx?quickdoc=469
所以通过移动
从page_load ID= "REM";
Page_init
这个问题神奇地消失了。
不幸的是,建议在Page_Load
中设置ID是很常见的,这是我所依赖的,但结果却是不好的建议。
DC