C# 我们可以在Gridview中使用列表框作为字段,也可以在Gridview中使用可编辑字段吗。。?
我必须为医生创建一个处方,自动从数据库中取药,然后医生可以自己写药的类型、效力和频率 所以我想在C# 我们可以在Gridview中使用列表框作为字段,也可以在Gridview中使用可编辑字段吗。。?,c#,asp.net,listview,gridview,C#,Asp.net,Listview,Gridview,我必须为医生创建一个处方,自动从数据库中取药,然后医生可以自己写药的类型、效力和频率 所以我想在Gridview中,在列表框类型字段中检索药物。这可能吗 其次,如果数据库中没有药物,医生可以编辑列表框来添加药物。最后,我需要一些可直接编辑的字段,如效力、频率和类型的文本框。当然,您可以这样做。您只需在GridView中放置一个文本框或列表框或您选择的任何控件。你可以用一些值来初始化它们,也可以在其中插入值 您所需要做的就是在GridView中找到这些控件,因为它是一个data repeater控
Gridview
中,在列表框
类型字段中检索药物。这可能吗
其次,如果数据库中没有药物,医生可以编辑
列表框来添加药物。最后,我需要一些可直接编辑的字段,如效力、频率和类型的文本框。当然,您可以这样做。您只需在GridView中放置一个文本框
或列表框
或您选择的任何控件。你可以用一些值来初始化它们,也可以在其中插入值
您所需要做的就是在GridView中找到这些控件,因为它是一个data repeater控件,因此假设您在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>
在GridView
的RowDataBound
事件中捕获控件,以使用某些值初始化它们:
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";
}
}
在页面的Page\u load
中调用BindGrid()
你需要探索更多关于和其他方面的知识 非常感谢您的帮助。我们可以将任何项目添加到这个创建的列表框中吗?一旦网站运行,我的意思是在它显示页面之后。?为什么不??当然,您可以这样做,对于一个列表框并没有这样的特定事件,但您可以做的是,您可以在GridView中的每个列表框下面放置一个按钮。单击该按钮后,您可以显示一个弹出窗口(一个隐藏的div,单击后显示)。您可以输入新项目的名称,在提交时,再次遍历GridView的项目,并查找控制列表框,然后添加项目(从div中的输入)…并将其保存到db,然后重新填充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";
}
}