方案
我正在使用包含DataGrid
的列的DropDownList
。当我更新值时,DropDownList
值不会更新。
我的研究
我认为需要一些C#代码才能使DropDownList
可编辑。我不知道在哪里放代码以及如何?有没有比C#代码短的方法?
非常感谢
编辑:提供的代码
student_table:id,name,major,favorite_teacher
teacher_table:id,name
gridview有学生的数据源。 DropDownList
有教师的数据源。
在gridview中,我将favorite_teacher设为模板字段(DropDownList
),并将teacher_table作为数据源。在编辑模式下,DropDownList
显示正确并填充教师表中的教师。当我为任何学生选择最喜欢的老师并点击提交时,提交不会通过。我可能需要一些C#代码或其他。不知道如何解决这个问题。
答案 0 :(得分:1)
请尝试下面的代码并告诉我它是否已修复:
protected void btnClick_Click(object sender, EventArgs e)
{
var tmpValue = ((DropDownList)gvRowItem.Cells[/*cellId*/].FindControl("/*dropDownListId*/")).SelectedValue;
}
答案 1 :(得分:0)
您可以尝试以下代码
DataSourceID =“sds_teacher_table”指的是teacher_table。 gridview将引用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;
}
答案 2 :(得分:0)
我是从教程here实现的,没有编写任何C#代码。
您不需要C#代码,但您也可以使用C#代码实现它。
您必须实施一项技巧。您需要将gridview的值绑定到要从中获取数据的另一个表的数据源。但是按照设计,由于下拉列表包含在GridView中,因此它只能绑定到gridview字段。这是主要的复杂因素。
要解决此问题,请在gridview中包含这些其他字段。您可能需要使用join语句,以便可以在gridview中包含所需的所有字段。现在,您可以轻松地将这些字段绑定到DropDownlist。当然,您不需要在GridView中显示这些额外的值,它们只适用于DropDownList。这将解决您的问题,而无需编写任何代码。