1

データベースから薬が自動的に取得され、医師が自分で服用する薬の種類、効力、頻度を書き込むことができる、医師向けの処方箋を作成する必要があります。

Gridviewだから私は、Listboxタイプフィールド内の薬を取得したいと考えています。これは可能ですか?

第二に、薬がデータベースに存在しない場合、医師が a を編集しListboxて追加できるようにしたいと考えています。Textboxes最後に、効力、頻度、タイプなど、直接編集可能なフィールドがいくつか必要です。

4

1 に答える 1

2

もちろん、あなたはそれを行うことができます。TextBoxGridView内に、またはListBoxまたは任意のコントロールを配置するだけです。そして、それらを何らかの値で初期化するか、それに値を挿入することができます。

データリピーターコントロールであるため、必要なのはGridView内でこれらのコントロールを見つけることだけです。したがって、GridView内に1つのテキストボックスを配置し、5つのアイテムを含むリストでバインドすると、5つのそのようなテキストボックスが作成されます。レンダリングされるため、必要なtextBoxを正確に見つけることができる必要があります。

以下に、非常に簡単な例を示します。

GridViewマークアップ:

<asp:GridView ID="Review_grid" runat="server" AllowPaging="True" PageSize="10" 
            AutoGenerateColumns="False" onrowdatabound="Review_grid_RowDataBound" 
            >
            <Columns>
                <asp:TemplateField HeaderText="ListBox">
                    <ItemTemplate>
                        <asp:ListBox ID="lstBox" runat="server"></asp:ListBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="TextBox">
                    <ItemTemplate>
                        <asp:TextBox ID="txtBox" runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

コードビハインドコード。

///create datasource for your GridView.
public void BindGrid()
{
    DataTable db = new DataTable();
    db.Columns.Add("col1");
    db.Columns.Add("col2");
    db.Columns.Add("col3");
    db.Rows.Add("1", "2", "3");
    db.Rows.Add("1", "2", "3");
    db.Rows.Add("1", "2", "3");

    Review_grid.DataSource = db;
    Review_grid.DataBind();
}

RowDataBoundのイベントでコントロールをトラップしGridViewて、値で初期化します。

protected void Review_grid_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //find ListBox
                ListBox lst = (ListBox)e.Row.FindControl("lstBox");
                lst.Items.Add(new ListItem("item1"));
                lst.Items.Add(new ListItem("item2"));
                lst.Items.Add(new ListItem("item3"));

                //find textBox
                TextBox txt = (TextBox)e.Row.FindControl("txtBox");
                txt.Text = "test";

            }
        }

BindGrid()ページのinを呼び出しPage_loadます。

GridViewおよびその他のdataControlsについて詳しく調べる必要があります。

于 2013-03-07T07:31:40.307 に答える