Gridview SqlDataSource; Проблема с обновлением - PullRequest
2 голосов
/ 24 июня 2011

Я пытаюсь сделать обновление формы

UPDATE TableName 
   SET field1 = NewValue
   WHERE field1 = OldValue

, но я не совсем уверен, как это сделать с GridView.

У меня есть это для моей разметки Gridview

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1"  AllowPaging="True" DataKeyNames="cftm_emp_name" PageSize="30">
    <Columns>
        <asp:CommandField ButtonType="Image" SelectImageUrl="~/Images/sel.jpg" ShowSelectButton="True" />
        <asp:BoundField DataField="cftm_emp_name" HeaderText="CF Team Member" SortExpression="cftm_emp_name" />
        <asp:CommandField ShowEditButton="True" />
    </Columns>
</asp:GridView>

и SqlDataSource выглядит следующим образом

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT DISTINCT [cftm_emp_name] FROM [rpc_extra_cf_team_members] ORDER BY [cftm_emp_name]" OnUpdating="SqlDataSource1_Updating" UpdateCommand="UPDATE rpc_extra_cf_team_members SET cftm_emp_name = ? WHERE cftm_emp_name = ?">
            <UpdateParameters>
                <asp:Parameter Name="cftm_emp_name" Type="String" />
                <asp:ControlParameter ControlID="GridView1" Name="cftm_emp_name" PropertyName="SelectedValue" />
            </UpdateParameters>
        </asp:SqlDataSource>

РЕДАКТИРОВАТЬ:

Нет ошибок, но просто не обновляет егоЯ установил точку останова в обработчике событий OnUpdating и заметил, что оба параметра установлены на OldValue.

Дайте мне знать, если потребуется какая-либо дополнительная информация, и я был бы признателен за любую помощь в этом.

Спасибо

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Причина в том, что вы обновляете поле первичного ключа с именем cftm_emp_name , которое вы используете как DataKeyNames = "cftm_emp_name" в вашем случае. Поле таблицы, которое мы используем в качестве DataKeyNames GridView, действует как первичный ключ таблицы. Итак, в вашей таблице «cftm_emp_name» является первичным ключом, и вы не можете обновить первичный ключ. Попробуйте обновить другие поля вашей таблицы, используя поле "cftm_emp_name" в качестве первичного ключа для критериев поиска.

Например, вы можете использовать запрос на обновление, такой как:

 UpdateCommand="UPDATE rpc_extra_cf_team_members SET cftm_emp_add = @cftm_emp_add WHERE cftm_emp_name = @cftm_emp_name"
<UpdateParameters>
  <asp:Parameter Name="cftm_emp_add" Type="String" />
  <asp:Parameter Name="cftm_emp_name" Type="String" />   
</UpdateParameters>
0 голосов
/ 24 июня 2011

установите свойство datakeymember sqldatasource в качестве поля первичного ключа в таблице и попробуйте надеюсь, это поможет

...