将read-only设置为true时,asp.net无法访问值

时间:2014-05-28 14:41:32

标签: asp.net sql vb.net

我的更新sql过程是

 ALTER PROCEDURE [dbo].[usp_update]

    @ID uniqueidentifier,
    @Period nvarchar(6),
   @News nvarchar(max),
   @Editor nvarchar(30)

     as
     begin

     update table1
   set      News= @News,  Editor=@Editor, LastRevNT=getdate()
    where ID=@ID and Period=@Period
       end

我的asp.net网格视图是

     <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True">
     <Columns>
      asp:CommandField ShowEditButton="True" />
         <asp:BoundField DataField="Period" HeaderText="Period" SortExpression="Period" ReadOnly="True"/>
         <asp:BoundField DataField="News" HeaderText="News" SortExpression="News" />
         <asp:BoundField DataField="Editor" HeaderText="Editor" SortExpression="Editor" ReadOnly="True" />
      </Columns>

数据源是

       <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="usp_select" SelectCommandType="StoredProcedure" UpdateCommand="usp_update" UpdateCommandType="StoredProcedure">
     <SelectParameters>
         <asp:SessionParameter DefaultValue="" Name="ID" SessionField="SelectedID" dbType="guid" />
     </SelectParameters>
     <UpdateParameters>
          <asp:SessionParameter DefaultValue="" Name="ID" SessionField="SelectedID" dbType="guid" />
           <asp:SessionParameter DefaultValue="" Name="Editor" SessionField="SelectedEditor"  dbType="string"/>
         <asp:Parameter Name="Period" Type="String" />
         <asp:Parameter Name="News" Type="String" />

     </UpdateParameters>
 </asp:SqlDataSource>

问题是当我更新表时,我需要ID和[Period]来获取唯一记录。 在gridview中,我不想修改[句点]。当我将句点的边界设置为只读时,我无法访问句点的值,因此无法更新正确的记录。

我想知道如何处理这个问题?

感谢您的建议!

1 个答案:

答案 0 :(得分:0)

我添加了DataKeyNames =&#34; ID,Period&#34;在我的aspgridview中,它现在可以正常工作了。谢谢你的建议!