gridview添加dropdownlist,在databound时设置数据源,并根据datakey设置选中项的奇怪的问题
公司做CRM用到了GRIDVIEW,遇到了一个奇怪的问题。我在前台Gridview中添加了一个审核状态的Dropdownlist内容如下:<asp:TemplateFie...
公司做CRM用到了GRIDVIEW,遇到了一个奇怪的问题。我在前台Gridview中添加了一个审核状态的Dropdownlist内容如下:
<asp:TemplateField ShowHeader="False" HeaderText="原因">
<ItemTemplate>
<asp:DropDownList ID="ddlShbtgyy" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
然后我在后台RowDataBound中绑定数据源,内容如下:
DropDownList ddlShbtgyy = (DropDownList)e.Row.FindControl("ddlShbtgyy");
if (ddlShbtgyy != null)
{
ddlShbtgyy.Items.Clear();
//绑定数据源从一个已经有值的dropdownlist中获取值
for (int i = 0; i < ddlBtgyy.Items.Count; i++)
{
ddlShbtgyy.Items.Add(ddlBtgyy.Items[i]);
}
//获取保存在DataKeys中的本条信息的状态值
string ztValue = gvInfo.DataKeys[e.Row.RowIndex].Values[2].ToString();
//设置选中项
for (int i = 0; i < ddlShbtgyy.Items.Count; i++)
{
if (ddlShbtgyy.Items[i].Value == ztValue)
{
ddlShbtgyy.Items[i].Selected = true;
}
}
问题就出在设置选中项这里:我页面运行后,发现所有的dropdownlist选中项都是一样的(调试发现是是有不同的选中值的,只不过每次循环设置选种值时都会把前面已经设置的选中项改为本次循环的选中项..),请问这种情况可以怎么解决? 展开
<asp:TemplateField ShowHeader="False" HeaderText="原因">
<ItemTemplate>
<asp:DropDownList ID="ddlShbtgyy" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
然后我在后台RowDataBound中绑定数据源,内容如下:
DropDownList ddlShbtgyy = (DropDownList)e.Row.FindControl("ddlShbtgyy");
if (ddlShbtgyy != null)
{
ddlShbtgyy.Items.Clear();
//绑定数据源从一个已经有值的dropdownlist中获取值
for (int i = 0; i < ddlBtgyy.Items.Count; i++)
{
ddlShbtgyy.Items.Add(ddlBtgyy.Items[i]);
}
//获取保存在DataKeys中的本条信息的状态值
string ztValue = gvInfo.DataKeys[e.Row.RowIndex].Values[2].ToString();
//设置选中项
for (int i = 0; i < ddlShbtgyy.Items.Count; i++)
{
if (ddlShbtgyy.Items[i].Value == ztValue)
{
ddlShbtgyy.Items[i].Selected = true;
}
}
问题就出在设置选中项这里:我页面运行后,发现所有的dropdownlist选中项都是一样的(调试发现是是有不同的选中值的,只不过每次循环设置选种值时都会把前面已经设置的选中项改为本次循环的选中项..),请问这种情况可以怎么解决? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询