【蛙蛙推荐】ListControl绑定空值的处理
问题:我们从数据库取出数据绑定到listbox里,如果DataValueField有多项为空,而你的listbox可以多选,这时候你选了多个ListBox的值,再点击其它按钮处理这些值的时候,尽管你选了多个值,但因为好多value都是零长度字符串,所以无法选中。
解决:我们可以利用ListControl的DataBinding事件来处理数据源,然后重新绑定,代码如下。
void bindlist()
{
//获取数据源并设置相应的绑定字段
ListBox1.DataSource = wawa.ContactsManager.GetDetpGroup(1);
ListBox1.DataValueField ="mobile";
ListBox1.DataTextField = "friendname";
//挂接Binding事件
ListBox1.DataBinding +=new EventHandler(ListBox1_DataBinding);
ListBox1.DataBind();
}
private void ListBox1_DataBinding(object sender, EventArgs e)
{
//获取listbox
ListControl lc = sender as ListControl;
if (lc != null)
{
//获取数据源
DataSet ds = lc.DataSource as DataSet;
if (ds != null)
{
DataTable dt = ds.Tables[0];
//判断数据源里是否有mobile列
if (dt.Columns.IndexOf("mobile") != -1)
{
int i = 0;
//循环所有行,并重新给mobile列赋值
//注意这里用一个递增的i作为后缀,是为了防止绑定后的listbox值重复
foreach(DataRow dr in dt.Rows)
{
if (dr.IsNull("mobile") || dr["mobile"].ToString() == "")
{
dr["mobile"] = "n/a" + i.ToString();
i++;
}
}
}
lc.DataSource = dt;
}
}
}
然后你处理值的时候可以判断value是否是"n/a"开头的,就可以知道是否是个无效值了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构