GridView的一些简单使用,如GridView突出显示某一单元格,GridView加入自动求和求平均值小计,GridView数据导入Excel/Excel数据读入GridView,GridView 模板列超链接,对GridView的某列进行输入验证,对GridView某一列进行编辑修改,再比如:使用HyperlinkField传输中文参数到下一个页面中,获取得到的是乱码等等
1.GridView突出显示某一单元格
如:某单元格的时间大于当前时间,则文字显示红色。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
protected void FSLGridView1_RowDataBound(object sender, GridViewRowEventArgs e)
2![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
if (e.Row.RowType != DataControlRowType.DataRow) return;
4![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
if (DateTime.Compare(DateTime.Parse(e.Row.Cells[3].Text.ToString()), DateTime.Now) > 0)
6
e.Row.Cells[3].ForeColor = System.Drawing.Color.Red;
7
}
8![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2.GridView加入自动求和求平均值小计
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
private double sum = 0;//取指定列的数据和,你要根据具体情况对待可能你要处理的是int
2
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
3![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
4
5
if (e.Row.RowIndex >= 0)
6![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
7
sum += Convert.ToDouble(e.Row.Cells[6].Text);
8
}
9
else if (e.Row.RowType == DataControlRowType.Footer)
10![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
11
e.Row.Cells[5].Text = "总薪水为:";
12
e.Row.Cells[6].Text = sum.ToString();
13
e.Row.Cells[3].Text = "平均薪水为:";
14
e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString();
15
16
}
17
}
18![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
另外,前台:设置ShowFooter="True" ,否则默认表头为隐藏的!
3.GridView数据导入Excel/Excel数据读入GridView
页面增加一个按钮,单击事件添加如下方法:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
protected void Button1_Click(object sender, EventArgs e)
2![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
Export("application/ms-excel", "学生成绩报表.xls");
4
}
5![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
private void Export(string FileType, string FileName)
7![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
8
Response.Charset = "GB2312";
9
Response.ContentEncoding = System.Text.Encoding.UTF7;
10
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
11
Response.ContentType = FileType;
12
this.EnableViewState = false;
13
StringWriter tw = new StringWriter();
14
HtmlTextWriter hw = new HtmlTextWriter(tw);
15
GridView1.RenderControl(hw);
16
Response.Write(tw.ToString());
17
Response.End();
18
}
19
//如果没有下面方法会报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
20
public override void VerifyRenderingInServerForm(Control control)
21![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
22
}
23
//还有由于是文件操作所以要引入名称空间IO和Text
24![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
25![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
读取Excel数据的代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
private DataSet CreateDataSource()
2![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
string strCon;
4
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("excel.xls") + "; Extended Properties=Excel 8.0;";
5
OleDbConnection olecon = new OleDbConnection(strCon);
6
OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strCon);
7
DataSet myds = new DataSet();
8
myda.Fill(myds);
9
return myds;
10
}
11
protected void Button1_Click(object sender, EventArgs e)
12![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
13
GridView1.DataSource = CreateDataSource();
14
GridView1.DataBind();
15
}
16![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4.GridView 模板列超链接
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
<asp:GridView ID="gvTrack" runat="server" Width="100%" AutoGenerateColumns="false" AllowPaging="false">
2
<Columns>
3
<asp:BoundField DataField="projectid" HeaderText="项目编号" SortExpression="projectid" ItemStyle-Width="80px"/>
4
<asp:TemplateField HeaderText="追踪月份" SortExpression="month">
5
<ItemTemplate>
6
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl ='<%#"Project_Report_ViewDetail.aspx?month="+Eval("month")+"&projectid="+Eval("projectid")+"&Report=TR"%>'
7
Text='<%# Eval("month") %>' ></asp:HyperLink>
8
</ItemTemplate>
9
</asp:TemplateField>
10
<asp:BoundField DataField="TARGET_SEQ_NO" HeaderText="目标序号" SortExpression="TARGET_SEQ_NO"/>
11
<asp:BoundField DataField="achievement" HeaderText="本月实绩" SortExpression="achievement"/>
12
Width="70px"/>
13
</Columns>
14
</asp:GridView> 超链接打开一个新窗口,并且隐藏地址栏
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
<asp:TemplateField HeaderText="报告月份" SortExpression="month">
2
<ItemTemplate>
3
<a href=# onclick='javascript:window.open("Project_Report_ViewDetail.aspx?month=<%# Eval("month") %>&projectid=<%# Eval("projectid") %>&Report=TR",null,"heigt=500,width=800,toolbar=no,menubar=no,location=no");' ><%# Eval("month") %></a>
4
</ItemTemplate>
5
</asp:TemplateField>
6![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5.对GridView的某列进行输入验证问题描述:在GridView中点击“确定”按钮时,要用Javascript先判断TextBox中日期的格式。一、服务器端代码
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
protected void GridView_NeedPlan_RowDataBound(object sender, GridViewRowEventArgs e)
2![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
if (e.Row.RowType == DataControlRowType.DataRow)
4![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
5
TextBox txt1 = (TextBox)e.Row.Cells[17].FindControl("pilotdate1");
6
((Button)e.Row.Cells[18].FindControl("Button1")).Attributes.Add("onclick", "return checkPilotDate('" + txt1.ClientID + "')");
7
}
8
9![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
}
11![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
二、浏览器端代码
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
function checkPilotDate(str)
{
2
var textbox = document.getElementById(str);
3![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (textbox.value == "")
{
4
alert("日期不能为空");
5
textbox.focus();
6
return false;
7![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
}else if (!isDate(textbox.value))
{
8
alert("请输入正确的日期 格式:2009-4-21");
9
textbox.focus();
10
return false;
11![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} else
{
12
var retd = confirm("确认后将不能修改,你确定吗?");
13
return retd;
14
}
15
}
16![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6.对GridView某一列进行编辑修改前台:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
<asp:TemplateField HeaderText="详情">
2
<ItemTemplate>
3
<asp:TextBox ID="txtResponse" runat="server" Text='<%# net.AppRlsMgr.function.Function.NoHTML(Eval("Response").ToString()) %>' Width="140px">
4
</asp:TextBox>
5
</ItemTemplate>
6
</asp:TemplateField> 后台:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
protected void FSLGridView1_RowCommand(object sender, GridViewCommandEventArgs e)
2![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
if (e.CommandName == "linkUpdate")
4![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
5
int SelectedRowIndex =int.Parse(e.CommandArgument.ToString());
6![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
string id=this.FSLGridView1.DataKeys[SelectedRowIndex].Value.ToString();
8![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
TextBox txt =(TextBox)this.FSLGridView1.Rows[SelectedRowIndex].Cells[1].FindControl("txtResponse");
10
string strResponse=txt.Text;
11![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
tblmtIncidentFlowList.update_NH(id.ToString(), strResponse);
13
ClientScript.RegisterStartupScript(GetType(), "", "<script language='javascript'>alert('修改成功!');</script>");
14
}
15
}7.使用HyperlinkField传输中文参数到下一个页面中,获取得到的是乱码。
解决方案是:使用模板列,另外Sever.UrlEncode()
如:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
<asp:TemplateField HeaderText="主机性能指标" HeaderStyle-ForeColor="#1C568A" SortExpression="typename">
2
<HeaderStyle ForeColor="#1C568A" HorizontalAlign="Center" />
3
<ItemStyle Wrap="True" Width="15%" />
4
<ItemTemplate>
5
<a href='PerformSummaryFix.aspx?typename=<%#Server.UrlEncode(Eval( "typename ").ToString())%>&updatetime=<%#Server.UrlEncode(Eval( "updatetime ").ToString())%>'>
6
<%# Eval("typename")%>
7
</a>
8
</ItemTemplate>
9
</asp:TemplateField>