一、问题描述:
最近在学习做C#开发时遇到了一个问题,就是SelectedValue无论怎么写在前端都取不了值,但是数据库是已存在值的
前端显示为空
后台代码:
ddlllqk = (DropDownList)GridView1.Rows[i].FindControl("DropDownListllqk"); //来料情况
ddlllqk.SelectedValue=dsss.Tables[0].Rows[i]["CT049"].ToString();
前台代码:
<asp:TemplateField HeaderText="来料情况">
<ItemTemplate>
<asp:DropDownList ID="DropDownListllqk" runat="server" DataSource='<%# ddlbindllqk()%>' DataValueField="CT049" DataTextField="CT049">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
通过debug发现上面C#代码中的ddlllqk.SelectedValue为空值,debug过程如下:
dsss.Tables[0].Rows[i][“CT049”].ToString():
可以看到上面的表达式是有值的:
但是我们可以看到左边的ddlllqk.SelectedValue的值是空的:
ddlllqk.SelectedValue为空值前端就无法显示出来了
那为什么这个为空值呢?
经过多方面查找原因,最终发现了问题的所在。
2、发现问题:
我用了两张表,一张是数据字典表,它的字符长度为25:
另一张是主要的数据表,它的字段长度为50:
可以看到这两张表的字段并不对应,所以SelectedValue才会取不到值
3、解决方法:
我最终把数据表的CT049字段长度改为25,和数据字典表一样:
问题解决,数据正常显示:
ps(刚开始学c#,小白,写这个当作学习笔记来的,给自己提个醒)