GridView超链接列的跳转问题

我在GridView中添加了RowDataBound事件,并在如图所示页面的CS代码页下写入了如下代码:protectedvoidGridView1_RowDataBou... 我在GridView中添加了RowDataBound事件,并在如图所示页面的CS代码页下写入了如下代码:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState == DataControlRowState.Normal)
{
e.Row.Cells[0].Text = "<a href='BillDispenseUpdate.aspx' target='_blank'>" + e.Row.Cells[0].Text + "</a>";
}
}
结果就像图中那样,PKID每隔一行才可点击那蓝色的超链接。这该如何解决?

还有,当我点击超链接列的时候,ErrorPage捕捉到错误为:未将对象引用设置到对象的实例。 我想这是否与链接页未能接受到传输参数等问题有关?并且主页和链接页都可以生成,不知道错在哪里。链接页的Page_Load代码如下:
protected void Page_Load(object sender, System.EventArgs e)
{
if (!this.IsPostBack)
{
// 获取从BillDispenseList页传递的变量值
int PKID = int.Parse(Request.QueryString["PKID"].ToString());

// 声明用户处理类对象
BillBusiness billBusiness = new BillBusiness();

// 根据登录ID获取用户实体
BillDispense bill = new BillDispense();
bill = billBusiness.GetBillDispense(PKID);

// 用取得的用户DataTable填充表单
this.DropDownList1.SelectedValue = bill.BillType;
this.TextBox1.Text = bill.BillStartCode;
this.TextBox2.Text = bill.BillEndCode;
this.DropDownList2.SelectedValue = bill.ReceiveBillPerson;
this.txtbBirthday.Text = bill.AcceptStation;
this.TextBox3.Text = bill.ReceiveBillTime.ToShortDateString();
this.DropDownList3.SelectedValue = bill.ReleasePerson;

}

}
BillBusiness是业务层的类,里面定义了与Page_Load相关的方法:
public BillDispense GetBillDispense(int pkId)
{
BillInterface ibill = BillFactory.CreateBill();
return ibill.GetBillDispense(pkId);
}
BillDispense是实体层定义的类,封装了相关代码:
public int PKID
{
get
{
return pkId;
}
set
{
pkId = value;
}
}
希望大家能帮我找出错误和解决方案,只希望能够彻底解决问题,成功链接到BillDispenseUpdate.aspx。
第一个编辑的问题解决了,我只好用大家说的方法来弄了。主要是我的第二个问题,那个“未将对象引用设置到对象的实例”的错误才是最让我头痛的。只要能解决的话,我是一定会加分的。

对于第一个问题,我直接在源下面做了修改,添加了如下代码来使每一列前出现列编辑,不再使用超链接列的方式。
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# "BillDispenseUpdate.aspx?rowid=" + Eval("PKID")%>'>
编辑</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
看来出现那个错误就是参数传输的原因了,这方面我确实不懂了,请您解答。
展开
 我来答
百度网友94f02eb
2009-07-13 · TA获得超过8612个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4435万
展开全部
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# "BillDispenseUpdate.aspx?PKID=" + Eval("PKID")%>'>
编辑</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

----------------------------
第二问题,其实是你第一个问题的后遗症,你的第一个问题,最终是如何解决的呢?

把第一个问题的解决方法帖一下。
看你的错误提示,是 Request.QueryString["PKID"] 没有取到值,我看了你上面的第一个问题的写法,如果你没有改动的话,肯定是要错误的,因为你根本没有传递 PKID 参数到 BillDispenseUpdate.aspx
微软专家张海
2009-07-12 · TA获得超过748个赞
知道小有建树答主
回答量:564
采纳率:100%
帮助的人:0
展开全部
到底那句报错?

跟着看是不是Request.QueryString["PKID"]=null
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xf14837616
2009-07-12 · TA获得超过558个赞
知道小有建树答主
回答量:799
采纳率:0%
帮助的人:402万
展开全部
添加一列叫HyperLink。里面有个属性叫DataNavigateUrlFormatString,设为
<a href='BillDispenseUpdate.aspx?PKID={0}'>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2009-07-12 · TA获得超过460个赞
知道小有建树答主
回答量:651
采纳率:0%
帮助的人:274万
展开全部
这个错误是因为你在后台没有设置交替项的原因,控件的名称后面加上交替项即可解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
斜季我悼械教4606
2009-07-12
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
不能正常显示的那一列你用的是GridView的模板列吧。造成错误的原因很大程度上是因为你在GridView控件这一列的单元格放置控件的时候不小心加了空格,这样会导致交替列无法正常显示。解决问题的方法是,对模板列中进行添加交替列操作。
1.在GridView控件右键编辑模板,选择出问题的那个模板列。
2.在编辑模板模式中将ItemTemplete中的内容全部复制到 AlternatingItemTemplete中。

这种情况经常出现,所以最终的解决办法是在使用DataList和GridView的时候每次都将ItemTemplete中的内容全部复制到AlternatingItemTemplete中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
南充美味卤鸭子
2009-07-12 · TA获得超过146个赞
知道小有建树答主
回答量:506
采纳率:0%
帮助的人:276万
展开全部
直接添加一个 模板列 ,里面放一个hyplink 拼写忘记了,就是超级链接的控件,在里面绑定数据就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式