如何获取网格视图中下拉列表的选定值
本文关键字:下拉列表 视图 网格 何获取 获取 | 更新日期: 2023-09-27 18:00:38
场景
我正在将DataGrid
与包含DropDownList
的列一起使用。当我更新这些值时,DropDownList
值不会得到更新。
我迄今为止的研究
我相信它需要一些C#代码来使DropDownList
可编辑。我不知道把代码放在哪里,怎么放?有比C#代码更短的方法吗?
非常感谢
编辑:提供的代码
student_table:id,姓名,专业,收藏夹_教师
teacher_table:id,名称
网格视图有学生的数据源。DropDownList
具有教师数据源。
在带有的网格视图中,我将favorite_tacher作为模板字段(DropDownList
),并将teacher_table作为数据源。在编辑模式下,DropDownList
显示正确的教师,并从教师表中填充教师。当我为任何学生选择一位最喜欢的老师并点击提交时,提交不会通过。我可能需要一些C#代码或其他代码。不知道如何解决这个问题。
请尝试以下代码,并让我知道它是否已修复:
protected void btnClick_Click(object sender, EventArgs e)
{
var tmpValue = ((DropDownList)gvRowItem.Cells[/*cellId*/].FindControl("/*dropDownListId*/")).SelectedValue;
}
您可以尝试以下代码
DataSourceID="sds_teacher_table"指的是teacheer_table。网格视图将引用student_table
<asp:TemplateField HeaderText="Favourite Teacher" >
<ItemTemplate>
<asp:Label ID="lblfavorite_teacher" runat="server" Text='<%# LookupTeacherName(DataBinder.Eval(Container.DataItem, "id")) %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlfavorite_teacher" runat="server" DataSourceID="sds_teacher_table" DataTextField="name" DataValueField="id" SelectedValue='<%#Bind("id")%>' Width="98%">
</asp:DropDownList>
</EditItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="ddlNewfavorite_teacher" runat="server" DataSourceID="sds_teacher_table" DataTextField="name" DataValueField="id" SelectedValue='<%#Bind("id")%>' Width="95%">
</asp:DropDownList>
</FooterTemplate>
<ItemStyle Width="25%" />
</asp:TemplateField>
protected string LookupTeacherName(object idObj)
{
if (string.IsNullOrEmpty(idObj.ToString()))
return null;
string TeacherId = idObj.ToString();
// find the corresponding name
IEnumerator enumos = sds_teacher_table.Select(new DataSourceSelectArguments()).GetEnumerator();
while (enumos.MoveNext())
{
DataRowView row = enumos.Current as DataRowView;
if ((string)row["id"].ToString() == TeacherId)
return string.Concat(row["name"].ToString());
}
return TeacherId;
}
我在这里的教程中实现了这一点,而没有编写任何C#代码。
您不需要C#代码,尽管您也可以使用C#代码来实现它。
你必须实施一个技巧。您需要将gridview的值绑定到要从中获取数据的另一个表的数据源。但根据设计,由于下拉列表包含在GridView中,所以它只能绑定到GridView字段。这是主要的并发症。
要克服这一点,请在网格视图中包含这些附加字段。您可能需要使用join语句,以便在gridview中包含所需的所有字段。现在,您可以轻松地将这些字段绑定到DropDownlist。当然,您不需要在GridView中显示这些额外的值,它们只用于DropDownList。这将解决您的问题,而无需编写一行代码。