Я не уверен, что его управление asp:SqlDataSource
или это ASPxTreeList
от DevExpress Я использую, но я получаю странную ошибку при попытке запустить хранимую процедуру с использованием метода Insert()
.SQLDataSource = "Процедура или функция [Имя] содержит слишком много аргументов."
При добавлении узла, когда я пытаюсь вставить узел в базу данных
protected void TagList_NodeInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
SqlDataTagging.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
SqlDataTagging.InsertParameters.Add("ParentID", e.NewValues["ParentTag_ID"].ToString());
SqlDataTagging.InsertParameters.Add("TagName", e.NewValues["TagName_VC"].ToString());
SqlDataTagging.InsertParameters.Add("UserID", "1");
SqlDataTagging.InsertCommand = "sp_InsertTag";
SqlDataTagging.Insert();
}
Однако, когда я стрелять выше код, я получаю эту ошибку
Процедура или функция sp_InsertTag имеет слишком много аргументов указано.
Мой SP Заголовок
ALTER PROCEDURE [dbo].[sp_InsertTag] (@ParentID INT, @TagName VARCHAR(100), @UserID int)
Но как вы можете видеть, есть 3 параметров в СП и 3 в C# код.
Странно, если я действительно запускаю SQL через текст, например.
SqlDataTagging.InsertCommandType = SqlDataSourceCommandType.Text;
и писать SQL в C#, он будет работать ...
Кто-нибудь есть какие-либо идеи или какие-либо альтернативы, так что я могу использовать хранимые процедуры?
Благодаря
остерегаться приставка "sp_" : http://stackoverflow.com/questions/20530211/avoid-naming-user-stored-procedures-sp-or-sp – Tanner
Спасибо за предупреждение, по-прежнему делает ту же ошибку, когда я сменил имя, но что-то о чем подуматьбудущее. – user3428422
Вызывается ли 'TagList_NodeInserting' 2-й раз, когда это происходит? Если это так же объект Collection объектов? Если это так, вы очищаете коллекцию перед вызовом? Даже если вы очищаете коллекцию, создайте новый экземпляр. – radarbob