更新gridview始终返回null参数

时间:2009-12-16 12:25:21

标签: c# .net gridview

我有一个简单的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)
{
}

它就在那里,所以我可以放入一个断点并检查参数,这些参数都是空值

2 个答案:

答案 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