обновление gridview всегда возвращает нулевые параметры - PullRequest
0 голосов
/ 16 декабря 2009

У меня есть простое представление сетки (ну, это сейчас), оно заполняется, я могу редактировать его. но когда дело доходит до обновления, я просто не могу заставить его работать.

Следующий код создает сетку, которая ищет пользователей, чье имя начинается с "c" (это часть моей фильтрации, которую я удалил)

Проблема в том, что когда я нажимаю кнопку обновления, она не обновляется. Хранимая процедура вызывается, но все передаваемые ей параметры равны нулю. поэтому база данных не обновляется.

Я знаю, что это простая проблема с простым решением, но я просто не вижу ее.

Я пытался использовать ExtractValuesFromCell в событии onupdating, но получал только нули. Мне пришлось добавить 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 голосов
/ 18 декабря 2009

Хорошо, у меня была возможность провести еще какое-то исследование и подтвердить проблему.

Проблема заключается в установке идентификатора главной страницы в функции Page_load. Это должно быть установлено в Page_Init.

Эта страница содержит хорошее объяснение
http://imar.spaanjaars.com/QuickDocId.aspx?quickdoc=469

Итак, двигаясь ID= "REM"; от page_load до Page_init проблема волшебным образом исчезла.

К сожалению, часто советуют устанавливать идентификатор в Page_Load, на что я и рассчитывал, и это оказалось плохим советом.

DC

0 голосов
/ 16 декабря 2009

Здесь должно быть что-то еще. Я тиражировал код, который вы предоставили, и когда я разбиваю аргументы события, я вижу значения, и все работает правильно. Не могли бы вы отредактировать свой пост и включить весь код?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...