zoukankan      html  css  js  c++  java
  • GridView的HyperLinkField的DataNavigateUrlFormatString如何使用自定义的变量,而不是数据库绑定的值

    GridView的HyperLinkField的DataNavigateUrlFormatString如何使用自定义的变量,而不是数据库绑定的值.报错:指定的参数已超出有效值的范围。参数名: index

     

    当我们在GridView中,偷懒,直接绑定数据库返回的 datatable的时候,用  HyperLinkField  的 DataNavigateUrlFields 来绑定数据库的字段,并且用 DataNavigateUrlFormatString 来显示url链接是很方便的。

    如果是要绑定datatable里面的2个字段,则是把 DataNavigateUrlFields 后面的值用逗号分开 DataNavigateUrlFields=“UserId,QQNumber” DataNavigateUrlFormatString='List.aspx?ID={0}&qq={1}'

    <asp:GridView ID="GVTeacher" runat="server" >
    <Columns>
                    <asp:HyperLinkField DataNavigateUrlFields="UserId" DataNavigateUrlFormatString='List.aspx?ID={0}' DataTextField="老师名称" Target="show" HeaderText="老师名称"/>
                    <asp:BoundField DataField="回答总数" HeaderText="回答总数" />
                </Columns>
            </asp:GridView>
    
    
    
    

    但是如果我们想在超链接里面,写一个非数据库的字段的值呢?或者是写自己定义的一个变量的值呢?

    例如:下面这个超级链接,他的绑定数据库的字段是 “学生名称”,但是这个URL 并没有指定(也就是没有写 DataNavigateUrlFields 和 DataNavigateUrlFormatString)

    如果我们的URL既想用到数据库里面的值,又想用到自己的变量,怎么来做?

    这个时候需要在 GridView上 加上行事件,onrowdatabound="GVStudent_RowDataBound"

    <asp:GridView ID="GVStudent" runat="server" BackColor="White" BorderColor="White" 
                Visible="false" onrowdatabound="GVStudent_RowDataBound">
                           <Columns>
                    <asp:HyperLinkField   DataTextField="学生名称" Target="show" HeaderText="学生名称"/>
                    <asp:BoundField DataField="提问总数" HeaderText="提问总数" />
                </Columns>
            </asp:GridView>
    

    然后在后台的CS上,加上以下代码

    protected void GVStudent_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                //this.GVStudent.EditIndex != e.Row.DataItemIndex 
                //这一句话是为了防止报错  
                //异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index
                if (e.Row.RowType == DataControlRowType.DataRow && this.GVStudent.EditIndex != e.Row.DataItemIndex)
                {
                    DataRowView DDR = e.Row.DataItem as DataRowView;
    
                    HyperLink temp = e.Row.Cells[0].Controls[0] as HyperLink;
                    if (temp!=null)
                    {
                        temp.NavigateUrl = string.Format(@"StudentList.aspx?ID={0}&start={1}&end={2}", DDR["UserId"], txtStart.Text, txtEnd.Text);
                    }
                    
                }
            }
    
     
  • 相关阅读:
    aws 计费查询
    关于网络抖动
    word2vec和onehot
    缺少了目标的教育是彻底的失败
    做事要风险控制
    SPS中计算值公式函数简介
    Moss + InfoPath 表单工作流开发要点
    【译】What is the NDK? (2)
    【译】What is the NDK? (1)
    【译】Android平台上的Flex开发(3) 在桌面和移动设备上测试
  • 原文地址:https://www.cnblogs.com/beeone/p/3449150.html
Copyright © 2011-2022 走看看