我正在使用 asp.net gridview 来显示 mdb 文件中的数据列表。显示 5 列,大约有 240 行数据。每行显示“名字”、“姓氏”、“标题”、“类型”、“问题”和“id”。
每个“标题”条目都有对应的 .aspx 页。大约有 180 个实际的 .aspx 页面对应于网格中的“标题”条目。这种关系的一个例子是:title = "Once Upon a time in a long story"; 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);
}
虽然这可行,但它需要将所有标题连同对应的 url 硬编码到相应的 select 语句中,这相当于 240 个案例!此外,唯一标识每一行的字段是“id”值,它是一个整数 - 我在尝试为 int 设置 case select 并返回正确的 url 时遇到问题(问题是转换错误)。
我希望完成的工作:找到最有效的方法来打开单击网格视图的“标题”字段的相应 url,而无需将网格列中的字段名称和 url 硬编码到案例选择中。
那么,鉴于上述信息,案例选择是否是满足此要求的最佳方法?任何更好的方法的例子或建议将不胜感激!