后台数据库已经保存了列表值
现在用dropdownlist 来显示后台保存的值
aspx文件
<asp:DropDownList ID="ddl_tyfs" runat="server" Height="16px" Width="79px"
AutoPostBack="True" DataSourceID="SqlDataSource_tyfs" DataTextField="name"
DataValueField="name" ondatabinding="Page_Load" ondatabound="Page_Load">
</asp:DropDownList>
cs文件
protected void Page_Load(object sender, EventArgs e)
{
string id = Request.Params["id"].ToString();
DataSet ds_fhrxx = sqlhelper.GetDataSet("select id,shrbm,shrxm,shrdh,shrdz,ssfhrbm,ssfhrxm,sssdzbm,sszdzbm,sstyfs,ssthfs,sszyfs,ssqdcl,sshwlb from shrxx where id='" + id + "'");
if (ds_fhrxx.Tables[0].Rows.Count > 0)
{
ddl_tyfs.Items.FindByText(ds_fhrxx.Tables[0].Rows[0]["sstyfs"].ToString()).Selected = true;
}
出现“未将对象引用设置到对象的实例”错误
现在用dropdownlist 来显示后台保存的值
aspx文件
<asp:DropDownList ID="ddl_tyfs" runat="server" Height="16px" Width="79px"
AutoPostBack="True" DataSourceID="SqlDataSource_tyfs" DataTextField="name"
DataValueField="name" ondatabinding="Page_Load" ondatabound="Page_Load">
</asp:DropDownList>
cs文件
protected void Page_Load(object sender, EventArgs e)
{
string id = Request.Params["id"].ToString();
DataSet ds_fhrxx = sqlhelper.GetDataSet("select id,shrbm,shrxm,shrdh,shrdz,ssfhrbm,ssfhrxm,sssdzbm,sszdzbm,sstyfs,ssthfs,sszyfs,ssqdcl,sshwlb from shrxx where id='" + id + "'");
if (ds_fhrxx.Tables[0].Rows.Count > 0)
{
ddl_tyfs.Items.FindByText(ds_fhrxx.Tables[0].Rows[0]["sstyfs"].ToString()).Selected = true;
}
出现“未将对象引用设置到对象的实例”错误
解决方案 »
- 怎样拿到excel checkbox/radio button的内容
- 一个方法里,有个委托调用自己这个方法,该怎么理解?
- winform焦点问题
- 求助~~~怎么用C#实现一个简单的计费系统,在线等......
- 帮个忙,在c#.net下,开发智能设备应用程序(pocket pc),窗口没用滚动条的属性,请问如何使窗体带有滚动条?
- 怎样打印二维数组中的元素
- 如何连接DBF表
- 看看大家的公司 面试招聘 时都出些什么题目?
- 关于C#文件的读取~~~自定义文件格式~~~
- 哪位愿意做我的义务导师?
- FileSystemWatcher类中事件的问题?
- 有个的算法 应该不难的,但我写不来,求高手写下,感激不尽
如果不一致,导致ddl_tyfs.Items.FindByText(ds_fhrxx.Tables[0].Rows[0]["sstyfs"].ToString()为空就会产生这这个错误了把异常的语句注释掉,查看dropdownlist的数据绑定情况,再去掉注释,调试查看
ds_fhrxx.Tables[0].Rows[0]["sstyfs"].ToString()的值
ddl_tyfs.Items.FindByText(ds_fhrxx.Tables[0].Rows[0]["sstyfs"].ToString().Trim()).Selected = true;
你需要将数据库的字段改为varchar或者nvarchar
{}
if(ddl_tyfs.Items.FindByText(ds_fhrxx.Tables[0].Rows[0]["sstyfs"].ToString())!=null)
{
ddl_tyfs.Items.FindByText(ds_fhrxx.Tables[0].Rows[0]["sstyfs"].ToString()).Selected = true;
}
这个有可能能选中,但是如果他的数据库字段有问题的话也不行,我见过一个类似的情况,数据库字段类型是char类型的,但是数据不足char的位数据库自动补充空格了,导致绑定失败
所以我让LZ看数据库字段的类型,他就是不告诉我呵呵,郁闷
哈哈果然被我说中了,就是这个问题你改为varchar(10)或者nvarchar(10)看看,问题就能解决了
id ,name
1 , 汽运
2 , 铁运
现在把(2 ,铁运)保存到了 表shrxx 中的sstyfs 字段中现在要修改shrxx 表中的sstyfs字段的方式。点击修改的时候 把(2,铁运)这个显示到dropdownlist中,但是dropdownlist的列表中还是只有bm_tyfs中的两个方式而已
if (ddl_tyfs.Items.FindByText(ds_fhrxx.Tables[0].Rows[0]["sstyfs"].ToString().Trim()) != null)
{ ddl_tyfs.Items.FindByText(ds_fhrxx.Tables[0].Rows[0]["sstyfs"].ToString().Trim()).Selected = true;
}
就可以了但是把datasource 改为了
<asp:DropDownList ID="ddl_tyfs" runat="server" Height="16px" Width="79px"
AutoPostBack="True" DataSourceID="SqlDataSource_tyfs" DataTextField="sstyfs"
DataValueField="sstyfs" >
</asp:DropDownList>红色行标注的但是这样的话 他显示的是shrxx表的所有的sstyfs的值 不是我想要的结果(要的是bm_tyfs 中的两种方式而已)
DataSet ds_tyfs = sqlhelper.GetDataSet("select name from bm_tyfs ");
ddl_tyfs.DataSource = ds_tyfs.Tables[0].DefaultView;
ddl_tyfs.DataTextField = "name";
ddl_tyfs.DataValueField = "name";
ddl_tyfs.DataBind();在打开的页面可以看到bm_tyfs的两个方式(默认第一项值) 但是无法显示在shrxx中保存的值 (sstyfs字段)