DataGrid的问题

userxk 2004-01-06 01:47:36
DataGrid里有一个编号列,这个编号列对应着另外一个表里的人员编号,每个编号对应着一个姓名,现想将DataGrid里的这个编号替换成相应的人员姓名,
有没有一个简单的办法?(注:不想采用视图)
...全文
25 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
userxk 2004-01-06
  • 打赏
  • 举报
回复
上面代码贴错了,应为:
绑定用:
GetName(DataBinder.Eval(Container, "DataItem.student_no").ToString().Trim())

下面的代码有一个问题,贴出来请大家帮忙看一下:
public string GetName(string Number)
{
string DBName = ServiceData.GetDBNameByID(SchoolDL.SelectedValue.ToString().Trim());
string strName = ServiceData.GetNameByNumber(Number,DBName);
return strName;
}
上面的代码对于每一行编号传入一个Number,即:string strName = ServiceData.GetNameByNumber(Number,DBName);
然后返回一个姓名,但是如果在ServiceData.GetNameByNumber(Number,DBName)函数里采用填充DataSet后再取得姓名,
那么系统的资源耗费将不可想象。
userxk 2004-01-06
  • 打赏
  • 举报
回复
public string GetNameByNumber(string Number,string DBName)
{
string strName;
string strConn = ConfigurationSettings.AppSettings.Get("KTConnectionString").Trim();
strConn = strConn.Replace("KTDBName",DBName);
dsConn.ConnectionString = strConn;

if ( dsCommand == null )
{
throw new System.ObjectDisposedException( GetType().FullName );
}
DataSet daStudentName = new DataSet();
dsCommand.SelectCommand
= new SqlCommand("select * from student_info where student_no = " + Number,dsConn);
dsConn.Open();
dsCommand.Fill(daStudentName);
dsConn.Close();
if(daStudentName.Tables[0].Rows.Count > 0)
{
strName = daStudentName.Tables[0].Rows[0]["name"].ToString().Trim();
}
else
{
strName = Number;
}
return strName;
}
userxk 2004-01-06
  • 打赏
  • 举报
回复
绑定用:
GetName(DataBinder.Eval(Container, "DataItem.student_no").ToString().Trim())

下面的代码有一个问题,贴出来请大家帮忙看一下:
public string GetName(string Number)
{
string DBName = ServiceData.GetDBNameByID(SchoolDL.SelectedValue.ToString().Trim());
string strName = ServiceData.GetNameByNumber(Number,DBName);
return Number;
}
上面的代码对于每一行编号传入一个Number,即:string strName = ServiceData.GetNameByNumber(Number,DBName);
然后返回一个姓名,但是如果在ServiceData.GetNameByNumber(Number,DBName)函数里采用填充DataSet后再取得姓名,
那么系统的资源耗费将不可想象。
76wzc 2004-01-06
  • 打赏
  • 举报
回复
好象能够一起写sql的,以后我见过,我帮你找下。
userxk 2004-01-06
  • 打赏
  • 举报
回复
两个表不在同一个数据库啊!
brightstar 2004-01-06
  • 打赏
  • 举报
回复
菜鸟前来学习@_@
76wzc 2004-01-06
  • 打赏
  • 举报
回复
我赞成:shyox(阿牛) 的做法;但还是推荐你在绑定的sql语句中实现,效率要好些。
sleeping100 2004-01-06
  • 打赏
  • 举报
回复
把你查询的sql语句改一下,如果人员的编号和姓名不在同一个表里面,
select a.*,b.* from a,b where a.编号=b.编号

然后把显示列的字段名称改一下,不知道符合符合你的情况不??
比尔咔咔 2004-01-06
  • 打赏
  • 举报
回复
esay
ItemDataBound 事件

if(e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.Item)
{
if(i.Item.Cells[0].Text=="0")
i.Item.Cells[0].Text="测试"
.........................
}
shyox 2004-01-06
  • 打赏
  • 举报
回复
绑定DataGrid的时候在编号列
<asp:TemplateColumn SortExpression="编号" HeaderText="编号">
<ItemTemplate>
<%# Get_Name(Int32.Parse((DataBinder.Eval(Container.DataItem,"编号").ToString()))) %>
</ItemTemplate>
</asp:TemplateColumn>

代码里面写个函数就行了
public string Get_Name(string ID)
{
}
gshope 2004-01-06
  • 打赏
  • 举报
回复
比如Text='<%# asd(DataBinder.Eval(Container.DataItem,"ID"))%>'
然后在后台.cs程序中加个asd()方法,把编号转换成姓名。
duanzj 2004-01-06
  • 打赏
  • 举报
回复
可以在DataGrid绑定数据的事件里替换。
gshope 2004-01-06
  • 打赏
  • 举报
回复
在绑定表达式里处理一下就可以了。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧