Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当列/单元格开始时没有数据时,Gridview不更新表_Asp.net_Vb.net_Gridview - Fatal编程技术网

Asp.net 当列/单元格开始时没有数据时,Gridview不更新表

Asp.net 当列/单元格开始时没有数据时,Gridview不更新表,asp.net,vb.net,gridview,Asp.net,Vb.net,Gridview,更新:这是SP,由于正在进行的测试,它不完全匹配,但您得到了jist。由于测试,某些字段被注释掉 @tableName Varchar(150), @new_lang_String nvarchar(max), -- @lang_String nvarchar(max), @ID int, @prev_LangString nvarchar(max) = NULL, @original_lang_String nvarchar(max) = NULL, @brief_Descrip

更新:这是SP,由于正在进行的测试,它不完全匹配,但您得到了jist。由于测试,某些字段被注释掉

     @tableName Varchar(150),
@new_lang_String nvarchar(max),
--  @lang_String nvarchar(max),
@ID int,
@prev_LangString nvarchar(max) = NULL,
@original_lang_String nvarchar(max) = NULL,
@brief_Descrip nvarchar(max) = NULL,
@submittedBy nvarchar(250) = NULL

AS
/* SET NOCOUNT ON */
DECLARE @lang_String varchar(max);
SET @prev_LangString = @new_lang_String;

DECLARE @submitDate1 DATETIME;
SET @submitDate1 = GETDATE();
DECLARE @sql varchar(max);
SET @lang_String = @original_lang_String;

BEGIN
     SET @sql = 'UPDATE ' + @tableName + ' SET [lang_String] = ''' + COALESCE(@lang_String, NULL) + ''', [date_Changed] = ''' +  convert(varchar(20), @submitDate1) + ''', [prev_LangString] = ''' + COALESCE(@prev_LangString, NULL) + ''', [brief_Descrip] = ''' +  COALESCE(@brief_Descrip, NULL) + ''', [submittedBy] = ''' + @submittedBy + '''
     WHERE (ID = ' + CAST(@ID as nvarchar(10)) + '); '
   EXECUTE(@sql);
END

 RETURN
正如您可能在代码中看到的,我一直在努力处理某些字段中的Null。因此,某些字段的默认值inteh update parameters为“”

我使用gridview来显示从SQLExpress数据库中的表中检索到的信息。当用户单击EDIT并输入信息时,我正试图使用一个从Gridview调用的存储过程来更新表。请参阅下面的aspx代码

问题是,正在编辑的列将不会更新DB表,除非它以前有数据存储在其中,因为列中的单元格不为空。没有错误

由于此列中的大多数单元格一开始为空,因此不会更新任何数据。没有错误,只是没有写入表中。如果表以前在相关列单元格中有数据,则可以成功编辑和更新该表

来自ASPX页面的Gridview

<asp:BoundField DataField="lang_String" HeaderText="Foreign Text"                 SortExpression="lang_String"> 
<ControlStyle Width="400px"/> 
</asp:BoundField> 
传递给UpdateCommand的参数,仅使用几个

<UpdateParameters> 
   <asp:SessionParameter Name="tableName" SessionField="tableName1" /> 
   <asp:SessionParameter Name="submittedBy" SessionField="SubmittedByUser" /> 
   <asp:Parameter Name="data_text" Type="String" /> 
   <asp:Parameter Name="lang_String" Type="String" DefaultValue=" " /> 
   <asp:Parameter Name="date_Changed" Type="DateTime" /> 
   <asp:Parameter Name="prev_LangString" Type="String" DefaultValue=" " /> 
   <asp:Parameter Name="needsTranslation" Type="String" /> 
   <asp:Parameter Name="displayRecord" Type="String" /> 
   <asp:Parameter Name="brief_Descrip" Type="String" DefaultValue=" " />                    
   <asp:Parameter Name="original_ID" Type="Int32" /> 
   <asp:Parameter Name="original_data_text" Type="String" /> 
   <asp:Parameter Name="original_lang_String" Type="String" /> 
   <asp:Parameter Name="original_date_Changed" Type="DateTime" /> 
   <asp:Parameter Name="original_prev_LangString" Type="String" /> 
   <asp:Parameter Name="original_needsTranslation" Type="String" /> 
   <asp:Parameter Name="original_displayRecord" Type="String" /> 
   <asp:Parameter Name="original_brief_Descrip" Type="String" /> 
   <asp:Parameter Name="original_submittedBy" Type="String" /> 
</UpdateParameters>  

如果单元格最初有数据“original_lang_String”,那么一切都可以工作,但是如果它没有被填充,我就不能使用Gridview的编辑操作来成功地更新表


任何帮助或建议都将不胜感激。

我认为问题可能在于将参数分配给同名列(
@lang\u String=@lang\u String
)。我建议按照参数在存储过程中出现的顺序指定参数,并删除@name=语法。我认为这会使数据源或网格视图变得混乱

更新

我认为您最好将UpdateCommand更改为:

UpdateCommand="usp_UpdatePTEdit"
并加入:

UpdateCommandType="StoredProcedure"

这似乎更适合update命令的工作方式。

@prev\u LangString=@original\u lang\u String

根据usp_UpdatepEdit中的内容,我打赌它会失败,因为它正在检查某个不存在的原始值。NULL是特殊的,对它的相等性检查失败


发布usp_UpdatepEdit存储过程中的代码以获取更多帮助。

我已按照与过程中相同的顺序指定了参数。不确定使用@name=语法引用的是什么?你能说得更具体些吗?谢谢。对不起,我认为
@lang\u String=@lang\u String
可能会让处理器感到困惑。如果参数的指定顺序正确,请尝试将其更改为
@lang\u string
(所有出现的
@parameter\u name=@parameter\u name
就是我的意思)。此语法来自Microsoft。@marc11h:我已经查看了有关UpdateCommand的一些文档,并用不同的建议更新了我的答案。谢谢您的回复。我真的试过了,4GuysfromRollla的一个教程,我想是的,实际上报告了UpdateCommandType=“StoredProcedure”的一个bug,并声明它需要说“Text”才能正确工作。我仍将测试您的建议,以防有修复程序或修补程序纠正此行为。
UpdateCommandType="StoredProcedure"