这样的泛型方法怎么写?

zhjzh_zjz 2006-04-18 09:39:35
现在有两数据邦定方法,唯一不同的就是参数类型不同,用泛型来实现如何写?

private void box_binding(object sender,EventArgs e){
TextBox box=(TextBox)sender;
FormView form=(FormView)box.NamingContainer;
box.Text=form.Convert.ToString ( DataBinder.Eval ( form.DataItem , box.ID.ToString ( ) ) )
}

private void label_binding(object sender,EventArgs e){
Label label=(Label)sender;
FormView form=(FormView)label.NamingContainer;
label.Text=form.Convert.ToString ( DataBinder.Eval ( form.DataItem , label.ID.ToString ( ) ) )
}

如何将以上两个方法用泛型合并到一个方法??
...全文
273 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhjzh_zjz 2006-04-18
  • 打赏
  • 举报
回复
Control box=(Control)sender 没问题,textbox or label 都是从control继承过来的,
box.NamingContainer 有问题,说不支持
真相重于对错 2006-04-18
  • 打赏
  • 举报
回复
我没有2005 ,大概写一下,错了请查msdn

private void box_binding(object sender,EventArgs e){
Control box=(Control)sender; //这句可能有问题,我不清楚textbox or label 在2005里是否从control继承
FormView form=(FormView)box.NamingContainer;//这里你也查一下
Type t = sender.GetType();
PropertyInfo pi = t.GetProperty("Text")
object values = form.Convert.ToString ( DataBinder.Eval ( form.DataItem , box.ID.ToString ( ) ) )

pi.SetValue( sender , values , nothing );
}
zhjzh_zjz 2006-04-18
  • 打赏
  • 举报
回复
用反射怎么做呢?还请各位大哥明示!
zerocoin 2006-04-18
  • 打赏
  • 举报
回复
呃,我倒觉得你应该把泛型的定义以及用途再了解一下.
真相重于对错 2006-04-18
  • 打赏
  • 举报
回复
反射
Dream_Lu 2006-04-18
  • 打赏
  • 举报
回复
不明白,泛型這樣用就大材小用了....
i169net1 2006-04-18
  • 打赏
  • 举报
回复
这样行吗?

public virtual void my_binding(object sender,string a)
{
switch (a)
{case "texbox":
TextBox box=(TextBox)sender;
FormView form=(FormView)box.NamingContainer;
box.Text=form.Convert.ToString ( DataBinder.Eval ( form.DataItem , box.ID.ToString ( ) ) )
break;
case "label":
Label label=(Label)sender;
FormView form=(FormView)label.NamingContainer;
label.Text=form.Convert.ToString ( DataBinder.Eval ( form.DataItem , label.ID.ToString ( ) ) )
break;
{
}



调用:
protected System.Web.UI.WebControls.Label Label1;
my_binding(Label1,"Label");

menuvb 2006-04-18
  • 打赏
  • 举报
回复
我也没试过。
private void box_binding(object sender,EventArgs e){
FormView form;
if typeof(sender) is Textbox
{
TextBox box=(TextBox)sender;
form=(FormView)box.NamingContainer;
}
elseif (typeof(sender)is Label)
{
......
}

box.Text=form.Convert.ToString ( DataBinder.Eval ( form.DataItem , box.ID.ToString ( ) ) )
}

}
yljlinjie 2006-04-18
  • 打赏
  • 举报
回复
asp.net技术交流
18590648
真相重于对错 2006-04-18
  • 打赏
  • 举报
回复
一样可以通过反射
类似于text

62,046

社区成员

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

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

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

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