0

私はまだグリッドビューの使用について学んでいますが、そのままで、3 つのテーブルで構成されるアクセス データベースがあり (演習の一部として)、結合ステートメントを使用して 3 つのテーブルすべての値フィールドを表示します。

conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;
                                Data Source =" + Server.MapPath("App_Data\\Shopping List.mdb"));
        conn.Open();

        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('a connection was established with the database')", true);

        DataSet ds = new DataSet();

        OleDbDataAdapter dba = new OleDbDataAdapter(@"SELECT Ingredient.IngredientId, Ingredient.IngredientName,  Area.AreaName, Recipe.RecipeName, Ingredient.Quantity 
                                                FROM (Ingredient
                                                INNER JOIN Area ON Ingredient.AreaId = Area.AreaId)
                                                INNER JOIN Recipe ON Ingredient.RecipeId = Recipe.RecipeId", conn);

        dba.Fill(ds);

        gridIngredients.DataSource = ds;
        gridIngredients.DataBind();

autoGenerateEditButton を true に設定して、編集ボタンを追加しました。テキストボックスまたはドロップダウンリストを行に追加してデータを更新するにはどうすればよいですか?

<asp:GridView ID="gridIngredients" runat="server" AutoGenerateColumns="False" 
        BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" 
        CellPadding="2" ForeColor="Black" GridLines="None" 
    AutoGenerateEditButton="True" 
    onselectedindexchanged="gridIngredients_SelectedIndexChanged" 
    Width="543px" onrowediting="gridIngredients_RowEditing">
        <Columns>
            <asp:BoundField DataField="IngredientId" HeaderText="ID" />
            <asp:BoundField DataField="IngredientName" HeaderText="Ingredient" />
            <asp:BoundField DataField="AreaName" HeaderText="Area" />
            <asp:BoundField DataField="RecipeName" HeaderText="Recipe" />
            <asp:BoundField DataField="Quantity" HeaderText="Quantity" />
        </Columns>
        <FooterStyle BackColor="Tan" />
        <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" 
            HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
        <HeaderStyle BackColor="Tan" Font-Bold="True" />
        <AlternatingRowStyle BackColor="PaleGoldenrod" />
    </asp:GridView>

よろしく

4

2 に答える 2

1

Columns次のようにセクションを変更できます。

<Columns>
    <asp:BoundField DataField="IngredientId" HeaderText="ID" />
    <asp:BoundField DataField="IngredientName" HeaderText="Ingredient" />
    <asp:BoundField DataField="AreaName" HeaderText="Area" />
    <asp:BoundField DataField="RecipeName" HeaderText="Recipe" />
    <asp:BoundField DataField="Quantity" HeaderText="Quantity" />

    <asp:TemplateField>
        <HeaderTemplate>
            A custom column
        </HeaderTemplate>
        <EditItemTemplate>
            <asp:TextBox ID="textBox" runat="server"></asp:TextBox>
        </EditItemTemplate>
    </asp:TemplateField> 

</Columns>
于 2012-12-05T09:07:03.823 に答える
1

IngredientId などの読み取り専用フィールドの場合は、ReadOnly="True" を追加します。Quantity などのテキスト ボックスで編集されるフィールドの場合。ドロップダウン リストや jQuery プラグインなどの特別なエディターの場合は、TemplateField を使用して EditItemTemplate (編集用) と ItemTemplate (表示用) をカスタマイズします。

    <asp:BoundField DataField="IngredientId" HeaderText="ID" ReadOnly="True" /> 
    <asp:BoundField DataField="Quantity" HeaderText="Quantity"/>    
    <asp:TemplateField HeaderText="Area">
        <EditItemTemplate>
            <asp:DropDownList ID="DDLArea" runat="server" 
                Text='<%# Bind("AreaCode") %>'>
                <!--items--> 
              </asp:DropDownList>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="Label1" runat="server" 
                Text='<%# Eval("AreaName") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
于 2012-12-05T09:21:27.323 に答える