我使用GridView来显示数据库中的记录。 另外我已经使用TemplateField将超链接附加到GridView。 当我尝试添加“点击”属性,以超链接的RowDateBound事件,我碰到下面的错误里面..ArgumentOutOfRangeException由用户代码未处理 - (ASP .net)
GridView1.DataKeys[e.Row.RowIndex].Value = 'GridView1.DataKeys[e.Row.RowIndex]' threw an exception of type 'System.ArgumentOutOfRangeException'
消息=“索引超出范围。必须为非负值并小于集合的大小\ r \ n参数名:索引”
这是的RowDataBound mentod内部编码..
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink HyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1");
//The following line makes the error
HyperLink1.Attributes.Add("onclick", "ShowMyModalPopup('" + GridView1.DataKeys[e.Row.RowIndex].Value + "')");
}
}
这是 “ShowMyModalPopup” 功能在JavaScript
<script type="text/javascript">
function ShowMyModalPopup(userpk)
{
var modal = $find('ModalPopupExtender1');
modal.show();
WebService.FetchOneUser(userpk,DisplayResult);
}
</script>
虽然索引值为零,但会抛出此异常。为什么这个错误发生 谁能请解释我..
提前很多感谢..
我怎样才能做到这一点.. 能否请您指导我.. 我已经向我的“用户”表“userPK”传递给ShowMyModalPopup() – 2010-06-07 06:56:27
好吧,如果它已经进入GridView控件(通过你指定的任何查询),你所需要做的就是使用代码:'e.Row [“userPK”]。Value'来获取超链接的值。如果它尚未进入GridView进行显示,则需要更新查询(或自动生成的DataTable)以包含该查询。我希望这是有道理的;不知道具体情况很难解释。 – drharris 2010-06-07 12:55:58