2011-02-14 75 views
1

時我如何獲得一個DropDownList的「@」的價值我有一個標準的DataGrid,看起來像這樣:更新一個DataGrid

<asp:GridView id="MyGridView" 
    DataSourceID="MyDataSource1" 
    AutoGenerateColumns="false" 
    AutoGenerateEditButton="true" 
    DataKeyNames="Id" 

    Runat="Server"> 

    <Columns> 

    <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 


    <asp:TemplateField HeaderText="State"> 
    <ItemTemplate> 
     <asp:Label ID="Label1" runat="server" Text='<%# Bind("State") %>'></asp:Label> 
    </ItemTemplate> 

    <EditItemTemplate> 
     <asp:DropDownList ID="IdState1" DataSource='<%# GetCategoryNames() %>' DataTextField="State" DataValueField="State" runat="server"></asp:DropDownList> 
    </EditItemTemplate> 

    </asp:TemplateField> 

在更新網格我有一個看起來像這樣的更新命令:

UpdateCommand= "UPDATE [MauriceBlackburnOffices] SET [Name] = @Name, [Address1] = @Address1, [TheStates] = @State WHERE [Id] = @Id" 

但@State字段無法識別。

Must declare the scalar variable "@State". 

@值應該是什麼?

如何將DropDownList值更新到更新語句中?

回答

3

我會猜測你正在使用SQLDataSource對象來填充GridView。如果是這樣,你可能沒有設置UpdateParameters(MSDN Link)。

更新您的SqlDataSource如下(你需要稍微修改爲您的代碼):

<asp:SqlDataSource 
      id="MyDataSource1" 
      runat="server" 
      ConnectionString="MyDataConnectionString" 
      SelectCommand="SELECT * FROM Table" 
      UpdateCommand="UPDATE [MauriceBlackburnOffices] SET [Name] = @Name, [Address1] = @Address1, [TheStates] = @State WHERE [Id] = @Id"> 
      <UpdateParameters> 
       <asp:ControlParameter Name="Name" ControlId="NameControl" PropertyName="Text"/> 
       <asp:ControlParameter Name="AddressID" ControlId="AddressControl" PropertyName="SelectedValue"/> 
<asp:ControlParameter Name="Name" ControlId="StateControl" PropertyName="SelectedValue"/> 
       <asp:ControlParameter Name="ID" ControlId="IDControl" PropertyName="SelectedValue"/> 
      </UpdateParameters> 
     </asp:SqlDataSource> 
1

實際上,你可以做到這一點,而不UpdateParameters

通過在完整的源仔細觀察這裏http://msdn.microsoft.com/en-us/library/ms972948.aspx我發現了這個問題。

其真實的奇怪。

在哪裏我說:

[TheStates] = @State 

「國家」必須是EditItemTemplate中的價值的SelectedValue,並必須由「綁定」的方式進行連接。

綁定(「狀態」)創建@State。

0

試試這個

<asp:DropDownList ID="IdState1" runat="server" DataTextField="State" DataValueField="State" SelectedValue='<%# Bind("State") %>'></asp:DropDownList>