sara-setare Ответов: 3

неправильный синтаксис рядом с ошибкой nvarchar в gridview


У меня есть проблема с обновлением столбца моего gridview; когда я пытаюсь обновить поле, я получаю эту ошибку:

Неправильный синтаксис возле 'аргумент'.
Необходимо объявить скалярную переменную "@pid".

Вот фрагмент моего кода:

<asp:GridView ID="GridView1" runat="server"  name="gd"  Height="100px" 
            Width="435px" AutoGenerateColumns="False" DataKeyNames="pid" DataSourceID="SqlDataSource1" >
    <Columns>
        <asp:CommandField ShowEditButton="True" ShowSelectButton="True" />
        <asp:BoundField DataField="pid" HeaderText="pid" 
                    SortExpression="pid" ReadOnly="True" />
        <asp:BoundField DataField="name" HeaderText="name" 
                    SortExpression="name" />
        <asp:BoundField DataField="hoghoghe rozane" HeaderText="hoghoghe rozane" 
                    SortExpression="hoghoghe rozane" />
        <asp:BoundField DataField="paye" HeaderText="paye" 
                    SortExpression="paye" />
    <\Columns>
<asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"  
            ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
  UpdateCommand="UPDATE [post] SET [name] = @name, [hoghoghe rozane] = @hoghoghe_rozane, [paye] = @paye WHERE (pid = @pid)" >   
     <UpdateParameters>
         <asp:Parameter Name="name" Type="String" />
         <asp:Parameter Name="hoghoghe_rozane" Type="Int32" />
         <asp:Parameter Name="paye" Type="Int32" />  
         <asp:Parameter Name="pid" Type="String" />
     </UpdateParameters>
 </asp:SqlDataSource>

NotPolitcallyCorrect

<asp:имя параметра= "@pid "тип= "String" />

sara-setare

нет, это не решило проблему!

NotPolitcallyCorrect

Так Какая еще у вас проблема?

sara-setare

Я сказал,что попробовал ваше решение, и оно не решило мою проблему, и у меня снова есть эта ошибка!

sara-setare

Я сказал, что попробовал ваше решение и снова получаю эту ошибку!

3 Ответов

Рейтинг:
2

Marcos Mercado

Я думаю, что проблема заключается в поле "hoghoghe rozane". В нем есть место. Хотя вы называете свой параметр hoghoghe_rozane, в имени Поля GridView есть пробел. Я не уверен, будет ли GridView связывать поле с параметром, когда они имеют разные имена, но я считаю, что команда Update GridView включает имя поля (с пробелом), поэтому выполнение обновления прерывается. Выполнение обновления в фоновом режиме выполняется через sp_executesql, поэтому синтаксическая ошибка возникает, когда имя параметра имеет пробел (вы можете проверить сценарий T-SQL, который выполняется с помощью SQL Server Profiler).

Решением этой ситуации является предоставление псевдонима столбцу в операторе Select, который заполняет Gridview. Я не вижу вашей команды SelectCommand в вашем коде. Если у вас есть один, он, вероятно, выглядит так:

SELECT ..., [hoghoghe rozane], ...
FROM ...


Поэтому я предлагаю переписать его следующим образом:

SELECT ..., [hoghoghe rozane] AS hoghoghe_rozane, ...
FROM ...


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


Рейтинг:
1

Zoltán Zörgő

Регистрация здесь: http://msdn.microsoft.com/en-us/library/ms972948.aspx[^].
Что вы должны были видеть, так это то, что во время обновления у вас есть исходное и новое значение поля. Вы должны перефразировать первоначальную стоимость pid. Попробовать это:

UPDATE [post] SET [name] = @name, [hoghoghe rozane] = @hoghoghe_rozane, [paye] = @paye WHERE (pid = @original_pid)


sara-setare

спасибо, я попробовал и получил ту же ошибку!!

Рейтинг:
1

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Я думаю, что это DataType конфликт.
Это означает, что DataType от pid в базе данных это отличается от данных, которые вы отправляете.

Как это называется pid, он может быть типа integer и тип, который вы посылаете, это string- Возможно, я ошибаюсь.

Итак, проверьте один раз, что это такое DataType в DataBase.