C# 更新栅格视图中的特定列

C# 更新栅格视图中的特定列,c#,C#,我有一个从数据库检索数据的GridView。用户有角色,一些用户将更新GridView中的一列,其他用户将根据角色更新其他列。请参见下面的代码!。我创建了如下的存储过程,并添加了代码。当我测试该项目时,以角色(AR Translator)为例,在网格视图中编辑列之后,它会用空值替换其他字段,所以请问我能做什么 存储过程 ALTER Proc [dbo].[GetAllTranslation] AS BEGIN Select Id,Word ,Trans_AR ,Trans_

我有一个从数据库检索数据的GridView。用户有角色,一些用户将更新GridView中的一列,其他用户将根据角色更新其他列。请参见下面的代码!。我创建了如下的存储过程,并添加了代码。当我测试该项目时,以角色(AR Translator)为例,在网格视图中编辑列之后,它会用空值替换其他字段,所以请问我能做什么

存储过程

ALTER Proc [dbo].[GetAllTranslation]
 AS
BEGIN 
  Select Id,Word 
   ,Trans_AR
   ,Trans_EN
   ,Add_Date 
  From Translation 
END

ALTER Proc [dbo].[UpdateTranslation]
(
  @IdINT
  ,@Word NVARCHAR(MAX)
  ,@Trans_AR NVARCHAR(MAX)
  ,@Trans_EN NVARCHAR(MAX)


)
AS
BEGIN 
  UPDATE  Translation SET

  Word =@Word 
  ,Trans_AR=@Trans_AR 
  ,Trans_EN=@Trans_EN 

  WHERE Id=@Id
END
 <div class="m10">
  <asp:GridView ID="GridView1" runat="server" BackColor="White" 
    BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" 
    ForeColor="Black" GridLines="Vertical" AllowPaging="True" 
    AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Id" 
    DataSourceID="SDSTrans" onrowupdated="GridView1_RowUpdated">
    <FooterStyle BackColor="#CCCC99" />
    <RowStyle BackColor="#F7F7DE" />
    <Columns>
        <asp:CommandField HeaderText="Function" ShowEditButton="True" />
        <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" 
            ReadOnly="True" SortExpression="Id" />
        <asp:BoundField DataField="Word" HeaderText="Word" SortExpression="Word" />
        <asp:BoundField DataField="Trans_AR" HeaderText="Trans_AR" 
            SortExpression="Trans_AR" />
        <asp:BoundField DataField="Trans_EN" HeaderText="Trans_EN" 
            SortExpression="Trans_EN" />
        <asp:BoundField DataField="Add_Date" HeaderText="Add_Date" 
            SortExpression="Add_Date" />
    </Columns>
    <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
    <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
    <AlternatingRowStyle BackColor="White" />
</asp:GridView>
    <asp:SqlDataSource ID="SDSTrans" runat="server" 
        ConnectionString="Data Source=ELARABY-1EACFA3\SQLEXPRESS;Initial Catalog=ElarabyGroup;Integrated Security=True" 
        ProviderName="System.Data.SqlClient" SelectCommand="GetAllTranslation" 
        SelectCommandType="StoredProcedure" UpdateCommand="UpdateTranslation" 
        UpdateCommandType="StoredProcedure">
        <UpdateParameters>
            <asp:ControlParameter ControlID="GridView1" Name="Id" 
                PropertyName="SelectedValue" Type="Int32" />
            <asp:ControlParameter ControlID="GridView1" Name="Word" 
                PropertyName="SelectedValue" Type="String" />
            <asp:ControlParameter ControlID="GridView1" Name="Trans_AR" 
                PropertyName="SelectedValue" Type="String" />
            <asp:ControlParameter ControlID="GridView1" Name="Trans_EN" 
                PropertyName="SelectedValue" Type="String" />
        </UpdateParameters>
    </asp:SqlDataSource>
<asp:Label ID="ResultLBL" runat="server" Visible="false"></asp:Label>
</div>
aspx页面

ALTER Proc [dbo].[GetAllTranslation]
 AS
BEGIN 
  Select Id,Word 
   ,Trans_AR
   ,Trans_EN
   ,Add_Date 
  From Translation 
END

ALTER Proc [dbo].[UpdateTranslation]
(
  @IdINT
  ,@Word NVARCHAR(MAX)
  ,@Trans_AR NVARCHAR(MAX)
  ,@Trans_EN NVARCHAR(MAX)


)
AS
BEGIN 
  UPDATE  Translation SET

  Word =@Word 
  ,Trans_AR=@Trans_AR 
  ,Trans_EN=@Trans_EN 

  WHERE Id=@Id
END
 <div class="m10">
  <asp:GridView ID="GridView1" runat="server" BackColor="White" 
    BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" 
    ForeColor="Black" GridLines="Vertical" AllowPaging="True" 
    AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Id" 
    DataSourceID="SDSTrans" onrowupdated="GridView1_RowUpdated">
    <FooterStyle BackColor="#CCCC99" />
    <RowStyle BackColor="#F7F7DE" />
    <Columns>
        <asp:CommandField HeaderText="Function" ShowEditButton="True" />
        <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" 
            ReadOnly="True" SortExpression="Id" />
        <asp:BoundField DataField="Word" HeaderText="Word" SortExpression="Word" />
        <asp:BoundField DataField="Trans_AR" HeaderText="Trans_AR" 
            SortExpression="Trans_AR" />
        <asp:BoundField DataField="Trans_EN" HeaderText="Trans_EN" 
            SortExpression="Trans_EN" />
        <asp:BoundField DataField="Add_Date" HeaderText="Add_Date" 
            SortExpression="Add_Date" />
    </Columns>
    <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
    <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
    <AlternatingRowStyle BackColor="White" />
</asp:GridView>
    <asp:SqlDataSource ID="SDSTrans" runat="server" 
        ConnectionString="Data Source=ELARABY-1EACFA3\SQLEXPRESS;Initial Catalog=ElarabyGroup;Integrated Security=True" 
        ProviderName="System.Data.SqlClient" SelectCommand="GetAllTranslation" 
        SelectCommandType="StoredProcedure" UpdateCommand="UpdateTranslation" 
        UpdateCommandType="StoredProcedure">
        <UpdateParameters>
            <asp:ControlParameter ControlID="GridView1" Name="Id" 
                PropertyName="SelectedValue" Type="Int32" />
            <asp:ControlParameter ControlID="GridView1" Name="Word" 
                PropertyName="SelectedValue" Type="String" />
            <asp:ControlParameter ControlID="GridView1" Name="Trans_AR" 
                PropertyName="SelectedValue" Type="String" />
            <asp:ControlParameter ControlID="GridView1" Name="Trans_EN" 
                PropertyName="SelectedValue" Type="String" />
        </UpdateParameters>
    </asp:SqlDataSource>
<asp:Label ID="ResultLBL" runat="server" Visible="false"></asp:Label>
</div>

我不完全理解,但如果我有要点。。。默认情况下,从数据库返回空值,如下所示:

ALTER Proc [dbo].[GetAllTranslation]
 AS
BEGIN 
  Select Id
   ,isnull(Word,'') as 'Word'
   ,isnull(Trans_AR,'') as 'Trans_AR'
   ,isnull(Trans_EN,'') as 'Trans_EN'
   ,Add_Date
  From Translation 
END

我想您需要像这样更新“更新”SP

ALTER Proc [dbo].[UpdateTranslation]
(
  @IdINT
  ,@Word NVARCHAR(MAX)
  ,@Trans_AR NVARCHAR(MAX)
  ,@Trans_EN NVARCHAR(MAX)


)
AS
BEGIN 
  UPDATE  Translation SET

  Word =isnull(@Word,Word)
  ,Trans_AR=isnull(@Trans_AR, Trans_AR)
  ,Trans_EN=isnull(@Trans_EN ,Trans_EN)

  WHERE Id=@Id
END

你能把问题再澄清一点吗?我不太明白你在问什么。。。是否手动更新gridview列?听起来他有空字符问题。。。或者可能是将一列置零?我希望翻译正确。我编辑了这个问题,我想你会理解问题仍然存在。当我对特定列进行更新时,它会将其他字段值替换为空值