技术开发 频道

.net中gridview疑难解答


【IT168技术文档】

1.   在网页中制作了一个gridview,其中一列是按钮列(此列已有click事件)

    现在需要实现如下的功能:1)单击此列某个cells后能在此cells右下方出现关于点击内容的“详细说明窗口”(可以是窗口也可以是其他);2)当鼠标再点击“详细说明窗口”以外的区域时,这个“说明窗口自动消失” 

    可直接用ToolTip属性。代码如下:
for (int i = 0; i <= GridView1.Rows.Count - 1; i++) 
{
DataRowView mydrv;
string gIntro;
if (GridView1.PageIndex == 0)
{
mydrv = myds.Tables["飞狐工作室"].DefaultView;//表名
gIntro = Convert.ToString(mydrv["家庭住址"]);//所要处理的字段
GridView1.Rows.Cells[3].Text = SubStr(gIntro, 2);
}
else
{
mydrv = myds.Tables["飞狐工作室"].DefaultView[i + (5 * GridView1.PageIndex)];
gIntro = Convert.ToString(mydrv["家庭住址"]);
GridView1.Rows.Cells[3].Text = SubStr(gIntro, 2);
GridView1.Rows.Cells[3]. ToolTip=gIntro;
}
}
   调用的方法:
public string SubStr(string sString, int nLeng) 
{
if (sString.Length <= nLeng)
{
return sString;
}
string sNewStr = sString.Substring(0, nLeng);
sNewStr = sNewStr + "...";
return sNewStr;
}

2. GridView中的超链接问题。


    GridView中有一个字段是超链接。根据该gridview中的另一个字段中内容的不同,超链接指向不同的网页,比如新浪,网易等。这样的超链接是在gridview中编辑出来,然后在cs文件中写if else语句进行判断吗?

    代码如下:
HTML code 
<%@ Page Language="C#" AutoEventWireup="true" EnableEventValidation="false" CodeFile="GridView.aspx.cs" Inherits="GridView" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body >
<form id="form1" runat="server" >

<div>
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" >
<Columns>
<asp:BoundField DataField="学生班级" />
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink id='hl' runat="server" NavigateUrl='<%# getUrl(Eval("学生班级").ToString()) %>' Text='<%# getName(Eval("学生班级").ToString()) %>'></asp:HyperLink>
<asp:LinkButton ID='lbtn' runat="server" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>


</form>
</body>
</html>
C# code

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

public partial class GridView : System.Web.UI.Page
{

protected ICollection CreateDataSource()
{

System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("布尔", typeof(System.Boolean)));

for (int i = 0; i < 11; i++)
{
System.Random rd = new System.Random(Environment.TickCount * i); ;
dr = dt.NewRow();
dr[0] = "班级" + i.ToString();
dr[1] = "学生" + i.ToString();
dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[6] = i % 2 == 0 ? true : false;
dt.Rows.Add(dr);
}
System.Data.DataView dv = new System.Data.DataView(dt);

}

代码接上
protected string getUrl(string tempStr) 
{
string url = "";
switch (tempStr)
{
case "班级0":
url = "www.sina.com";
break;
case "班级1":
url = "www.baidu.com";
break;
case "班级2":
url = "www.google.com";
break;
case "班级3":
url = "www.tom.com";
break;
default:
url = "default.aspx";
break;
}
return url;
}
protected string getName(string tempStr)
{
string name = "";
switch (tempStr)
{
case "班级0":
name = "新浪";
break;
case "班级1":
name = "百度";
break;
case "班级2":
name = "谷歌";
break;
case "班级3":
name = "Tom";
break;
default:
name = "default.aspx";
break;
}
return name;
}


protected void Page_Load(object sender, EventArgs e)
{


GridView1.DataSource = CreateDataSource();
GridView1.DataBind();

}



protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{

LinkButton lbtn = e.Row.FindControl("lbtn") as LinkButton;
if (lbtn != null)
{
string tempStr = e.Row.Cells[0].Text;
switch (tempStr)
{
case "班级0":
lbtn.PostBackUrl = "www.sina.com";
lbtn.Text = "新浪";
break;
case "班级1":
lbtn.PostBackUrl = "www.baidu.com";
lbtn.Text = "百度";
break;
case "班级2":
lbtn.PostBackUrl = "www.google.com";
lbtn.Text = "谷歌";
break;
case "班级3":
lbtn.Text = "TOM";
lbtn.PostBackUrl = "www.tom.com";
break;
default:
lbtn.Text = "default.aspx";
lbtn.PostBackUrl = "default.aspx";
break;
}
}

}


}
}

3.GridView 是否有滚动条的功能?


    开发的时候用到了GridView控件,由于查询的数据列较多,要显示很宽,不知道在asp。net中有没有滚动条的功能,另外,能不能限定GridView的宽度,不能让它自由的伸缩。 

    可采用如下的样式
margin:auto;
width:98%;
overflow:scroll;
_height:expression(this.scrollHeight>365?"365px":"auto");
0
相关文章