1

我必须为医生创建一个处方,药物会自动从数据库中取出,然后医生可以自己写下要服用的药物的类型、效力和频率。

所以我想在Gridview,Listbox类型字段内检索药物。这可能吗。

其次,我还希望如果数据库中不存在药物,医生可以编辑Listbox添加它。最后,我想要一些直接可编辑的字段,例如Textboxes效力、频率和类型。

4

1 回答 1

2

当然,你可以这样做。您只需在 GridView 中放置一个TextBoxListBox任何您选择的控件。你可以用一些值初始化它们,或者你可以在其中插入值。

您所需要做的就是在 GridView 中找到这些控件,因为它是一个数据中继器控件,因此假设您在 GridView 中放置一个文本框,并将它与一个包含 5 个项目的列表绑定,那么 5 个这样的文本框将被渲染,因此您需要能够准确定位所需的文本框。

下面我给你一个超级简单的例子。

你的 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()Page_load

您需要了解更多关于GridView和其他dataControls的信息。

于 2013-03-07T07:31:40.307 回答