如何从ASP.Net gridview列字段链接到.aspx页面

时间:2012-05-27 19:32:32

标签: asp.net c#-4.0

我正在使用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时遇到了问题(转换错误是问题)。

我希望完成的事情: 找到打开相应网址的最有效方法,点击网格视图的“标题”字段,而无需对网格列中的字段名称和案例选择中的网址进行硬编码。

因此,鉴于上述信息,案例选择是否是此要求的最佳方法? 任何更好方法的例子或建议都会受到最高的赞赏!

1 个答案:

答案 0 :(得分:0)

您必须使用c#4.0及更高版本中引入的路由概念,而不是制作180个实际.aspx页面。

这里你可以动态生成N个页面,只有一个页面可以作为模板。

请参阅以下链接了解更多详情

URL Routing in asp.net as example www.jobdoor.in