0

DropDownList(DDL) をエンティティ データソースにバインドしようとしています。GridView(GV) は、DDL とは異なる EntityDataSource にバインドされています。GV の EntityDataSource には、関係のナビゲーション プロパティ 'Bag' があります。編集モードでは別の項目を選択できますが、そのレコードのデータベースは更新されません。EntityDataSource のナビゲーションにインクルードを使用しました。配線が正しくないことは確かです。私はこれまで運がなかった検索を試みました。助けてくれてありがとう。

<asp:TemplateField HeaderText="Bag">
  <ItemTemplate >
    <asp:Label ID="lbEditBag" Text='<%#Eval("Bag.Item1") %>' runat="server" />
  </ItemTemplate>
  <EditItemTemplate >
    <asp:DropDownList runat="server" ID="ddlBags" DataSourceID="edsBags" DataTextField="Amount" DataValueField="BagId" />
  </EditItemTemplate>
</asp:TemplateField>
4

1 に答える 1

0

ドナ、まだ答えが見つからない場合は、私が信じた後にあなたと同じようなことをするために私が何をしたかを説明します.

グリッドビューには、さまざまな asp:TempleteField があります。これは次のようなものです:-

<ItemTemplate>
   <asp:Label ID="lblActive" runat="server" Text='<%# Bind("Active") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<%--<asp:TextBox ID="txtboxActive" runat="server" Text='<%# Bind("Active") %>'     Width="20px" TextMode="SingleLine" CssClass="textboxEdit"></asp:TextBox>--%>
<asp:DropDownList ID="activeDDL" CausesValidation="False" AutoPostBack="False"     runat="server">                      <asp:ListItem Text="No" Value="0"></asp:ListItem>
<asp:ListItem Text="Yes" Value="1" Selected="True"></asp:ListItem>
   </asp:DropDownList>
</EditItemTemplate>

ご覧のとおり、EditItemTemplete に 2 つのドロップダウンリスト項目があります (DDL 値のデータベースにバインドするために使用していたものと同様のコードを残しましたが、もう使用しないため、コメントアウトされています)

次に、ID、runat="server"、DataKeyNames などと一緒に

<asp:Gridview ID=""...

私は持っている

OnRowUpdated="info_GridView_RowUpdated"

これは、SQL 関数の背後にある C# コードで実行され、DDL からの設定でデータベース テーブルを更新します (他のいくつかの Gridview.Databind() も入れて、他のグリッドビューをリセットします)。

protected void info_GridView_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
    // The update operation was successful. Retrieve the row being edited.
    int index = info_GridView.EditIndex;
    GridViewRow row = info_GridView.Rows[index];
    int itemID = Convert.ToInt32(row.Cells[4].Text); // Cells[4] is only one available as others are being edited!

    // update Active value in the database //
    comm = new SqlCommand("UPDATE Products SET Active=@active WHERE ItemID=@itemID", objConn);
    comm.Parameters.AddWithValue("@active", ddlValue); // this stores DDL value in database
    comm.Parameters.AddWithValue("@itemID", itemID);// Convert.ToInt32(propertyRefTextBox.Text));

    objConn.Open();
    comm.ExecuteNonQuery();
    objConn.Close();

              // force update and reset selectedIndex of other gridviews //
    Category_GridView.DataBind();
    editImages_GridView.DataBind();

    Category_GridView.SelectedIndex = -1;
    editImages_GridView.SelectedIndex = -1;

}

上記がお役に立てば幸いです。

トレヴ。

于 2013-06-06T22:40:48.207 に答える