在vs2008中gridveiw绑定了sqldatasource,
sql文"select classID,studendID,studenNM,type from a,b ...."gridview 一共两列,学生名和type,学生名 这一列是个hyperlinkfield,
问题
  1  点击学生名跳到另外一个页面
                        <asp:HyperLinkField DataTextField="studenNM" HeaderText="学生名" 
                            
                            DataNavigateUrlFormatString="abc.aspx?classID={0}&studendID={0}" 
                            DataNavigateUrlFields="classID,studendID" />
请问 怎么传递 studendID,和classID这两个参数,我这样写应该是不对的。
2 虽然点学生名 跳到另外一个页面,不过有这样的要求。
  学生名是 "XIAOXIAO" 的链接页面 是 efg.aspx,别的学生 都是abc.aspx
请问怎么实现。

解决方案 »

  1.   

    学生名那一列用模板列,然后用LinkButton,绑定其CommandArgument属性为学生的id,然后在后台跳转页面。
      

  2.   

    用 模板列怎么用。能不能给出  <asp:TemplateField   >这里面的内容。
    谢谢
      

  3.   

    模板列 就加 <asp:控件名 /> 
    CS ROWCOMMAND写 生成对象,FIND()找控件.再加IF()去你想让去的地方URL 
    不知道,对不.嘿嘿
      

  4.   

    不知道这是不是你要的功能...<body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="AccessDataSource1"
                Width="256px">
                <Columns>
                    <asp:TemplateField HeaderText="name" SortExpression="name">
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>                       
                                <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# DataBinder.Eval(Container.DataItem,"name").ToString()=="a1"?DataBinder.Eval(Container.DataItem,"name","aa.aspx?id={0}"):DataBinder.Eval(Container.DataItem,"name","ab.aspx?id={0}").ToString()%>'
                                Text='<%# Eval("name") %>'></asp:HyperLink>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        
        </div>
            <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/aa.mdb"
                SelectCommand="SELECT [name], [sex] FROM [aa]"></asp:AccessDataSource>
        </form>
    </body>
      

  5.   

    能不能只传一个参数?classID或studendID
    如果可以的话可以这么实现:
    在grisview中编辑模板,在模板中添加一个hyperlinkfield,然后编辑hyperlinkfield
    navigateUrl为Eval("studentID", "abc.aspx?studentID={0}")
    Text为Eval("要绑定的内容"),结束模板编辑
    然后在跳转页面(abc.aspx)中写连接数据库代码
    类似:
     protected void Page_Load(object sender, EventArgs e)
        {
            string strcon = System.Configuration.ConfigurationManager.ConnectionStrings["newsConnectionString"].ToString();
            string strSql = "select .... from [学生表] where studentID="+Request["studentID"];
            SqlConnection conn = new SqlConnection(strcon);        SqlCommand cmd = new SqlCommand(strSql, conn);
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            DetailsView1.DataSource = dr;//这里用的DetailsView控件
            DetailsView1.DataBind();
            conn.Close();
        }基本上就是这样,你试试吧!
      

  6.   

    感谢各位的回答,不过还不行。
    就是 gridview绑定了sqldatasource
    有一个学生名列hyperlinkfield,点链接的时候,如果学生名 是 xiaoxiao 连接到 a.aspx,如果不是连接到 b.aspx
    请把 答案给的详细一点好吗。
      

  7.   

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
        <Columns>
            <asp:TemplateField >
                <ItemTemplate>                       
                        <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("studenNM").ToString().ToUpper() == "XIAOXIAO" ? "a.aspx" : "b.aspx" + "?classID=" + Eval("classID") + "&studendID=" + Eval("studendID") %>' Text='<%# Eval("studenNM") %>'></asp:HyperLink>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
      

  8.   

    protected void Page_Load(object sender, EventArgs e) 
        { 
            string strcon = System.Configuration.ConfigurationManager.ConnectionStrings["newsConnectionString"].ToString(); 
            string strSql = "select .... from [学生表] where studentID="+Request["studentID"]; 
            SqlConnection conn = new SqlConnection(strcon);         SqlCommand cmd = new SqlCommand(strSql, conn); 
            conn.Open(); 
            SqlDataReader dr = cmd.ExecuteReader(); 
            DetailsView1.DataSource = dr;//这里用的DetailsView控件 
            DetailsView1.DataBind(); 
            conn.Close(); 
        } 基本上就是这样,你试试吧! 
      

  9.   

    这个不行吗?我试过,可以实现你说的功能,只是我用的是access而已,你改个绑定应该就可以了...