C# .NET的SelectedValue取值为空或取不到值而导致前端(前台)显示空值的一种情况的解决方法

一、问题描述:

最近在学习做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#,小白,写这个当作学习笔记来的,给自己提个醒)

猜你喜欢

转载自blog.csdn.net/qq_18913129/article/details/103808294