2014-03-26 41 views
0

我有一個GridView,其功能離一個SqlDataSource的發生時,它允許插入和更新數據。但是,插入數據後,用戶不應編輯「UpdatedBY」。所以我增加了一個只讀屬性到綁定列,並將其設置爲true,一旦在試圖編輯/更新列以下錯誤:必須聲明標量變量「@UpdateBY」。注意:只有當我在「UpdateBY」列上實現只讀屬性時纔會出現錯誤。當刪除,更新沒有錯誤當電網,但我不希望用戶能夠修改UpdateBY列錯誤,只有只讀綁定列被設置爲true

超:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataKeyNames="Mode_ID" DataSourceID="SqlDataSource1" 
    AutoGenerateEditButton="True" AllowPaging="True" AllowSorting="True"> 
    <Columns> 
     <asp:BoundField DataField="Mode_ID" HeaderText="Mode ID" SortExpression="Mode_ID" Visible="false" /> 

     <asp:BoundField DataField="ShipMode" HeaderText="Ship Mode" SortExpression="ShipMode" /> 

     <asp:TemplateField HeaderText="Active" SortExpression="Active"> 
      <EditItemTemplate> 
       <asp:CheckBox ID="chkactive" runat="server" Checked='<%# Bind("Active") %>'></asp:CheckBox> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Active") %>'></asp:CheckBox> 
      </ItemTemplate> 
     </asp:TemplateField> 

     <asp:BoundField DataField="UpdateDate" HeaderText="Update Date" SortExpression="UpdateDate" /> 

     <asp:BoundField DataField="UpdateBY" HeaderText="Update BY" SortExpression="UpdateBY" ReadOnly="true" /> 
    </Columns> 
    </asp:GridView> 

... SQL數據源:

<asp:SqlDataSource 
    ID="SqlDataSource1" 
    ConnectionString="<%$ ConnectionStrings:ShipperNotificationConnectionString %>" 
    SelectCommand="SELECT Mode_ID, ShipMode, Active, UpdateDate, UpdateBY FROM [ShipMode]" 
    UpdateCommand="UPDATE ShipMode SET [email protected], 
    [email protected],[email protected], [email protected] 
    WHERE [email protected]_ID" 
    InsertCommand="INSERT ShipMode (ShipMode,Active,UpdateDate,UpdateBY) 
      VALUES (@ShipMode,@Active,@UpdateDate,@UpdateBY)"  
    runat="server" 
     /> 

我能得到一些幫助,以我缺少/不理解,請什麼呢?

回答

0

我belieave你所得到的錯誤,一旦你打更新正確的嗎?

你應該採取的辦法描述here

從我個人理解,你想從改變「UpdatedBy」字段的值,因爲這將破壞這種字段的目的限制用戶。

在你ASPX代碼,你必須設置GridView1 OnRowUpdating = GridView1_RowUpdating,這裏是後臺代碼爲:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow row = GridView1.Rows[GridView1.EditIndex]; 

    // Put a debug point here to check if value of originalUpdatedBy = UpdatedBy of Edit row 
    string originalUpdatedBy= row.Cells[7].Text;   

    if(!string.IsNullOrEmpty(originalUpdatedBy)) 
    { 
     SqlDataSource1.UpdateParameters.Add("@UpdateBy", originalUpdatedBy); 
     SqlDataSource1.Update(); 
    } 
} 
+0

做工精細,感謝您的幫助 – user1724708