Команда обновления Gridview не работает с 2 столбцами базы данных

Вот рабочая версия команды обновления gridview

 <asp:SqlDataSource ID="MatchDataSource" runat="server" SelectCommand="SELECT * FROM [dbo].[SYR1]"
        UpdateCommand="UPDATE [dbo].[SYR1] SET Fname = @Fname
        WHERE ID=@ID 
    ConnectionString="<%$ ConnectionStrings:ApplicationServices %>">
        <UpdateParameters>
            <asp:Parameter Type="String" Name="Fname" />
            <asp:Parameter Type="String" Name="Lname" />
            <asp:Parameter Type="String" Name="ID" />
        </UpdateParameters>
    </asp:SqlDataSource>

<Columns>
    <asp:CommandField ShowEditButton="True"></asp:CommandField>
    <asp:BoundField ReadOnly="true" HeaderText="First Name"  DataField="fname" SortExpression="fname"><ItemStyle HorizontalAlign="Right"></ItemStyle></asp:BoundField>
    <asp:BoundField ReadOnly="false" HeaderText="Last Name" DataField="lname"    SortExpression="lname"><ItemStyle HorizontalAlign="Right"></ItemStyle> </asp:BoundField>
</Columns>

У меня проблема в том, что у меня есть столбцы базы данных с 2 именами, то есть вместо "fname" у меня есть "Имя". Поле данных в порядке и займет имя столбца из 2 слов

<asp:BoundField ReadOnly="true" HeaderText="First Name"  DataField="First Name" SortExpression="fname"><ItemStyle HorizontalAlign="Right"></ItemStyle></asp:BoundField>

Проблема в том, что я не могу сохранить параметр в 2 слова, поэтому я не уверен, как заставить работать обновление... Ниже приведена неудачная попытка. Может кто-нибудь помочь мне с этим, пожалуйста.

UpdateCommand="UPDATE [dbo].[SYR1] SET [First Name] = @First name
        WHERE ID=@ID 
    ConnectionString="<%$ ConnectionStrings:ApplicationServices %>">
        <UpdateParameters>
            <asp:Parameter Type="String" Name="First Name" />
            <asp:Parameter Type="String" Name="Last Name" />
            <asp:Parameter Type="String" Name="ID" />
        </UpdateParameters>

2 ответа

Решение первое

UpdateCommand="UPDATE [dbo].[SYR1] SET [First Name] = @First name
        WHERE ID=@ID 
    ConnectionString="<%$ ConnectionStrings:ApplicationServices %>">
        <UpdateParameters>
            <asp:Parameter Type="String" Name="[First Name]" />
            <asp:Parameter Type="String" Name="[Last Name]" />
            <asp:Parameter Type="String" Name="ID" />
        </UpdateParameters>

Если это не работает, то вы можете использовать псевдонимы,

Решение второе

Select [First Name] as Fname, ...
from tableName

Ссылка на ссылку для правил http://msdn.microsoft.com/en-us/library/aa223962.aspx

Встроенные пробелы или специальные символы не допускаются.

Измените ваши имена параметров:

UpdateCommand="UPDATE [dbo].[SYR1] SET [First Name] = @FirstName
        WHERE ID=@ID 
    ConnectionString="<%$ ConnectionStrings:ApplicationServices %>">
        <UpdateParameters>
            <asp:Parameter Type="String" Name="FirstName" />
            <asp:Parameter Type="String" Name="LastName" />
            <asp:Parameter Type="String" Name="ID" />
        </UpdateParameters>
Другие вопросы по тегам