日期:2014-05-20  浏览次数:20468 次

问一个 在datalist下判断表中字段的问题
是这样,我表中有两个字段     shop_name,url
shop_name:商店名称
url:商店网站地址

然后我在前台用   datalist绑定这个表
直接   显示出   shop_name这个字段我是用     Hyperlink   显示的   商店名称

我要实现的功能是  
当   url这个字段   没有值的时候     hyperlink   的   Enabled   为false
反之就为   true


也就是说   ,当   商店有网站的时候   可以链接网站,如果没有网站的时候就没有链接

现在我在后台写了一个方法

protected   string   link_ok(string   url)
{
string   zhi= " ";
if   (url   !=   " "   &&   url.Trim().Substring(0,4)== "http ")
{zhi   =   "   Enabled=true ";}
else
{zhi   =   "   Enabled=true ";}
Response.Write(zhi.ToString());
return   zhi;
}

在前台调用  
<asp:HyperLink   id= "HyperLink1 "   runat= "server "   NavigateUrl= ' <%#DataBinder.Eval(Container.DataItem, "sj_url ")%> '   Target= "_blank "   <%=link_ok( "?????问题所在 ")%> >
<%#DataBinder.Eval(Container.DataItem, "sj_name ")%>
</asp:HyperLink>


我现在的问题   就是   如何   在前台   把url这个字段   做为参数   放到   我的   link_ok方法里啊??


如果这种   方法不行,那还有什么方法可以实现我想要的功能??
谢谢大哥们


------解决方案--------------------
这种方法不是很好. 还不如直接用模板列 <a <%#GetUrl(DataBinder.Eval(Container.DataItem, "sj_url ").ToString())%> <%#DataBinder.Eval(Container.DataItem, "sj_name ")%> </a> 后台函数 如果url正确就返回 href=\ " " + url +\ " " 否则返回空
------解决方案--------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebAppTest
{
/// <summary>
/// WebForm2 的摘要说明。
/// </summary>
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataList DataList1;

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
BindData();
}
}

private void BindData()
{

DataTable dt = new DataTable();
DataRow dr;

dt.Columns.Add(new DataColumn( "sj_url ", typeof(string)));
dt.Columns.Add(new DataColumn( "sj_name ", typeof(string)));

for (int i = 0; i < 9; i++)
{
dr = dt.NewRow();

if(i % 2 != 0)
dr[0] = " ";
else
dr[0] = "http://url ";

dr[1] = "sj_name ";

dt.Rows.Add(dr);
}

this.DataList1.DataSource = new DataView(dt);
this.DataList1.DataBind();
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataList1.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.DataList1_ItemDataBound);