我正在使用asp.net gridview来显示mdb文件中的数据列表。显示5列,大约240行数据。每行显示“名字”,姓氏“,”标题“,”流派“,”问题“和”id“。
每个“标题”条目都有相应的.aspx页面。大约有180个实际.aspx页面对应于网格中的“标题”条目。 这种关系的一个例子如下:title =“很久以前的故事”;并且aspx页面可能是/alongstory.aspx。
我想要完成的任务:允许用户点击网格上的标题字段并打开相应的.aspx页面。
到目前为止我做了什么:在“标题”字段上创建了一个aspLabel - Text ='<%#Eval(“Title”)%>';并为标签加载事件添加了C#代码:
aspLabel l = sender as aspLabel;
l.ClientsideEvents.Click = String.Format("function(s,e) {{window.location = \"{0}"; }}, GetPageUrl(l));
和GetPageUrl:
Private string GetPageUrl(aspLabel l)
{GridViewDataItemTemplateContainer c = l.NamingContainer as GridViewDataItemTemplateContainer:
var value = (string)DataBinder.Eval(c.DataItem, "Title");
string result;
switch (value) {
case "in the mirror":
result = "AnotherTitlePage.aspx";
break;
case "When your Eyes":
result = "AnotherTitlePage2.aspx";
break;
case "Her Delivery":
result = "ATitlePage1.aspx";
break;
case "You Never Know What You Might See":
result = "TitlePage3.aspx";
break;
default:
result = "TitlePageDoesNotHavesameNameAsDBEntry.aspx";
break;
}
return Page.ResolveUrl(result);
}
虽然这有效,但它需要将所有标题硬编码到相应的select语句中以及相应的url,相当于240个案例!此外,唯一标识每一行的唯一字段是“id”值,在整数中 - 我在尝试为int设置case select并返回正确的url时遇到了问题(转换错误是问题)。
我希望完成的事情: 找到打开相应网址的最有效方法,点击网格视图的“标题”字段,而无需对网格列中的字段名称和案例选择中的网址进行硬编码。
因此,鉴于上述信息,案例选择是否是此要求的最佳方法? 任何更好方法的例子或建议都会受到最高的赞赏!
答案 0 :(得分:0)
您必须使用c#4.0及更高版本中引入的路由概念,而不是制作180个实际.aspx页面。
这里你可以动态生成N个页面,只有一个页面可以作为模板。
请参阅以下链接了解更多详情