想要实现的效果:

1.查询数据库,将查询结果显示在GridView中。

2.将 姓名 列设置为超链接模式,当使用鼠标点击 姓名 时,跳转到指定的页面,可附带参数。

3.将 身份证号 列中身份证号中间8位数字设置为*进行隐藏。

4.模板列中控件的取值。

实现过程:

1.点击查询按钮BtnMoreSearch,根据文本框TxtMoreSearch中的内容,以及下拉框DDLSearchClass中选定的类别,编制查询字符串。查询数据库,将查询结果显示在GridView中。

protected void BtnMoreSearch_Click(object sender, EventArgs e)
        {
            MySqlConnection MoreSearch = new MySqlConnection();    //建立新的Sql查询
            string SqlStr = "SELECT * FROM TableStudent WHERE " + DDLSearchClass.SelectedValue.Trim() + " LIKE '%" + TxtMoreSearch.Text.Trim() + "%'";    //设置查询字符串
            DataSet MoreSearchResult = MoreSearch.MySqlSearch(SqlStr);    //定义一个DataSet用于存放查询结果
            GVMoreSearch.DataSource = MoreSearchResult.Tables[0];    //设置GridView的数据源为将查询结果
            GVMoreSearch.DataBind();    //显示查询结果
            GVMoreSearch.Width = 800;    //设置GridView的宽度
        }

2.将 姓名 列设置为超链接模式,当使用鼠标点击 姓名 时,跳转到指定的页面,可附带参数。

TemplateField为GridView中的模板列,可用于定制显示内容。TemplateField提供了6个不同的模板,用于定制列的指定区域。

模  板  名

说    明

ItemTemplate

用于显示数据绑定控件的TemplateField中的一项

AlternatingItemTemplate

用于显示TemplateField的替换项

EditItemTemplate

用于显示编辑模式下的TemplateField项

InsertItemTemplate

用于显示插入模式下的TemplateField项

HeaderTemplate

用于显示TemplateField的标题部分

FooterTemplate

用于显示TemplateField的脚标部分

我们在这里使用一个ItemTemplate模板,放入一个超链接HyperLink控件,用来实现超链接。

HyperLink中

Text属性为显示的内容。可以使用参数 <%#Eval("列名") %> 来显示查询出的数据。这里我们要显示 姓名 ,因此使用 <%#Eval("姓名") %>

NavigateUrl属性为链接地址。我们要跳转到页面About,并在链接的参数中附带上鼠标所点击学生的身份证号,用于下一页面的查询。使用一个字符串连接操作,"~/About.aspx?id=" + Eval("身份证号") 

也可以点击GridView右侧的小箭头标志,选择“编辑模板”

 出现编辑页面

把鼠标移动到ItemTemPlate中的控件列表上,[GV_Column_StudentName]即为刚才添加的HyperLink控件,控制右侧会显示可以进行编辑的小箭头标志,点击会出现 编辑DataBindings 选项

 进入编辑,即可对各项绑定属性进行设置

前台Html代码:

<asp:GridView ID="GVMoreSearch" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField HeaderText="姓名">
            <ItemTemplate>
                <asp:HyperLink ID="GV_Column_StudentName" runat="server" Text='<%#Eval("姓名") %>' NavigateUrl='<%#"~/About.aspx?id=" + Eval("身份证号") %>'></asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="身份证号">
            <ItemTemplate>
                <asp:Label ID="GV_Column_StudentID" runat="server" Text='<%#Eval("身份证号").ToString().Substring(0,6)+ "********" + Eval("身份证号").ToString().Substring (Eval("身份证号").ToString().Length - 4)%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="年级" HeaderText="年级" />
        <asp:BoundField DataField="春秋" HeaderText="春秋" />
        <asp:BoundField DataField="类别" HeaderText="类别" />
        <asp:BoundField DataField="院系" HeaderText="院系" />
        <asp:BoundField DataField="专业" HeaderText="专业" />
    </Columns>             
</asp:GridView>

3.将 身份证号 列中身份证号中间8位数字设置为 * 进行隐藏。

继续添加一个模板列TemplateField,选择ItemTemplate,并在其中插入一个Label标签控件。

Label控件的Text属性设置为:

<%#Eval("身份证号").ToString().Substring(0,6)+ "********" + Eval("身份证号").ToString().Substring (Eval("身份证号").ToString().Length - 4)%>

还是用到了  Eval("身份证号") 参数来获取GridView中相应列的值,并使用字符串操作函数

Eval("身份证号").ToString().Substring(0,6)    //获取身份证号前6位字符
Eval("身份证号").ToString().Substring (Eval("身份证号").ToString().Length - 4)    //获取身份证号后4位字符

身份证号中间8位字符使用“********”来代替,实现隐藏。

同样可以在GridView上点击右侧的小箭头来进行设置

4.模板列中控件的取值

放在模板列中的控件要用findControl方法找到后,才能取到值
比如在模板列中放入一个标签控件Label,ID为Label1,要想获取Label1的Text值,使用如下方法:

Label lbl=(Label)GridView1.Rows[i].FindControl("Label1");  //其他控件方法也是这样

更多推荐