Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我们可以在Gridview中使用列表框作为字段,也可以在Gridview中使用可编辑字段吗。。?_C#_Asp.net_Listview_Gridview - Fatal编程技术网

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";

            }
        }