Я хочу вставить строку в сетку Infragistics. Он имеет 2 столбца, идентификатор и имя. Оба связаны. Но когда я вставляю, я хочу использовать столбец Name в качестве параметра. Но когда я использую оба варианта, вставка работает. У меня есть ID как параметр, но я не использую его, потому что это столбец идентификатора. Когда я использую только «Имя», я получаю ошибку, слишком много аргументов для хранимой процедуры.Ошибка вставки SqlDataSource - слишком много аргументов
Это разметка:
<ig:WebHierarchicalDataGrid runat="server" height="600px" width="875px"
ClientIDMode="Static" AutoGenerateBands="False"
AutoGenerateColumns="False" DataKeyFields="ID"
DataMember="SqlDataSource9_DefaultView" StyleSetName="Windows7"
ID="wdgPrivileges"
DataSourceID="WebHierarchicalDataSource7" Key="SqlDataSource9_DefaultView">
<Columns>
<ig:BoundDataField DataFieldName="ID" Key="ID" Hidden="true">
<Header Text="ID" />
<header text="ID" />
</ig:BoundDataField>
<ig:BoundDataField DataFieldName="Name" Key="Name" Width="95%">
<Header Text="Name" />
<header text="Name" />
</ig:BoundDataField>
</Columns>
</ig:WebHierarchicalDataGrid>
<asp:SqlDataSource ID="SqlDataSource13" runat="server"
ConnectionString="<%$ ConnectionStrings %>"
SelectCommand="GetPrivilege" SelectCommandType="StoredProcedure"
UpdateCommand="SetPrivilege" UpdateCommandType="StoredProcedure"
InsertCommand="InsPrivilege" InsertCommandType="StoredProcedure">
<UpdateParameters>
<asp:Parameter Name="ID" Type="Int32" />
<asp:Parameter Name="Name" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Name" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
Моя хранимая процедура:
PROCEDURE [dbo].[InsPrivilege]
@Name varchar(50)
AS
Begin
INSERT INTO Privilege ([Name], LastUpdate)
VALUES (@Name, GetDate())
end
мне нужна ID быть связанным для команды обновления SQL.
Должен ли я использовать его в качестве параметра во вставке и просто не использовать его?
UPDATE
<ig:WebHierarchicalDataSource ID="WebHierarchicalDataSource7" runat="server">
<DataViews>
<ig:DataView ID="SqlDataSource9_DefaultView" DataMember="DefaultView"
DataSourceID="SqlDataSource13" />
</DataViews>
</ig:WebHierarchicalDataSource>
UPDATE Это обновление и выберите сохраненную информацию процедуры ...
<asp:SqlDataSource ID="SqlDataSource13" runat="server"
ConnectionString="<%$ ConnectionStrings %>"
SelectCommand="GetPrivilege" SelectCommandType="StoredProcedure"
UpdateCommand="SetPrivilege" UpdateCommandType="StoredProcedure"
InsertCommand="dmInsPrivilege" InsertCommandType="StoredProcedure">
<UpdateParameters>
<asp:Parameter Name="ID" Type="Int32" />
<asp:Parameter Name="Name" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="ID" Type="Int32" DefaultValue="0" />
<asp:Parameter Name="Name" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
Выберите Stored Procedure:
PROCEDURE [dbo].[GetPrivilege]
AS
Begin
SELECT ID, [Name]
FROM Privilege with (nolock)
end
Обновление хранимой процедуры:
PROCEDURE [dbo].[SetPrivilege]
@ID int,
@Name varchar(50)
AS
Begin
UPDATE Privilege
SET [Name] = @Name, LastUpdate = GetDate()
WHERE ID = @ID
end
Сообщение об ошибке: [SqlException]: Процедура или функция InsPrivilege имеет слишком много аргументов, указанных.
Покажите нам полное сообщение об исключении и покажите нам хранимую процедуру «UpdPrivileges». –
Я думаю, вы даете нам код 'SqlDataSource13', но ваша сетка использует' WebHierarchicalDataSource7';). –
WebHierarchicalDataSource7 определяется с помощью DataSourceID SqlDataSource13. Это выше. –