GridView客户端读取当前填写的textbox 进行客户端判断比较
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<%@ Register Src="WebUserControl.ascx" TagName="WebUserControl" TagPrefix="uc1" %>
<!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>TTT</title>
<script type="text/javascript">
function checkDel()
{
if(!confirm("确认删除吗?"))
return false;
}
function Check()
{
//alert(document.getElementById('Text1').value);
//alert(document.getElementById(this).value);
//alert(document.form1.elements.length);onchange="Check()"
var obj=document.getElementsByTagName("input");
var objstr = '';
for(var i=0;i<obj.length;i++)
{
if(obj[i].type.toLowerCase()=="text" && obj[i].value!="")
{
//alert(obj[i].value);
objstr = objstr+' '+obj[i].value;
//DIVID.value = DIVID.value+' and '+obj[i].valueonchange="Check()"
}
}
document.getElementById("txtInfo").value=objstr;
alert(objstr);
}
//获取当前TextBox所在的DataGrid 行
function getIt(obj) {
//document.getElementById("txtInfo").value='ddd';
var r,c
o = obj
while(o.tagName != "TD" && o.tagName != "TH")
o = o.parentNode
if(o.tagName != "TD" && o.tagName != "TH") return
c = o.cellIndex
while(o.tagName != "TR")
o = o.parentNode
if(o.tagName != "TR") return
r = o.rowIndex
//document.getElementById("txtInfo").value = document.getElementById("GridView1").rows[r].cells[1].innerText
//+' -- '+document.getElementById("GridView1").rows[r].cells[2].firstChild.value;
var oNum = document.getElementById("GridView1").rows[r].cells[2].firstChild.value;
var oMax = document.getElementById("GridView1").rows[r].cells[1].innerText;
if(isNaN(oNum))
{
document.getElementById("GridView1").rows[r].cells[2].firstChild.value = document.getElementById("GridView1").rows[r].cells[1].innerText;
alert( "订购数量必须为数字 ");
}
else
{
if(parseFloat(oNum)>parseFloat(oMax))
{
document.getElementById("GridView1").rows[r].cells[2].firstChild.value = document.getElementById("GridView1").rows[r].cells[1].innerText;
alert( "订购数量不能大于合理定量! ");
}
else if( parseFloat(oNum)<0)
{
document.getElementById("GridView1").rows[r].cells[2].firstChild.value = document.getElementById("GridView1").rows[r].cells[1].innerText;
alert( "订购数量不能小于0 ");
}
}
//document.getElementById("txtInfo").value='ddd';
//下面的代码是取gridview模板列中控件的内容
//document.getElementById("grid1").rows[r].cells[0].innerText可以求网格单元的内容
//document.getElementById("grid1").rows[r].cells[0].firstChild.value="";
//document.getElementById("txtInfo").value=document.getElementById("GridView1").rows[r].cells[3].firstChild.value="";
//document.getElementById("grid1").rows[r].cells[2].firstChild.value="";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div> <asp:Button ID="Button2" runat="server" Text="Button" Width="0px" />
<asp:TextBox ID="txtInfo" runat="server" Height="58px" TextMode="MultiLine" Width="421px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="BindData" />
<asp:Button ID="btnAddrow" runat="server" OnClick="btnAddrow_Click" Text="AddRow" />
<asp:Button ID="btnExcel" runat="server" OnClick="btnExcel_Click" Text="Excel" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="LightGoldenrodYellow"
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None"
OnRowCommand="GridView1_RowCommand" OnRowDeleting="GridView1_RowDeleting">
<FooterStyle BackColor="Tan" />
<Columns>
<asp:BoundField DataField="id" HeaderText="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Text" HeaderText="Text" />
<asp:TemplateField SortExpression="Num" HeaderText="Num">
<ItemTemplate>
<asp:TextBox ID="txtBox" runat="server" onblur="getIt(this)" Text='<%# Bind("Num") %>'
Width="83px" ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:Button ID="btnDel" runat="server" CommandName="Del" CommandArgument="id" OnClick="btnDel_Click" Text="删除" />
<asp:Button ID="Button3" runat="server" Text="Button" />
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<AlternatingRowStyle BackColor="PaleGoldenrod" />
</asp:GridView>
<input id="Text1" type="text" />
<div style="width: 100px; height: 100px" id="DIVID">
</div>
</div>
</form>
</body>
</html>
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.IO;
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//WebUserControl1.SetDll(GetData());
//int i = Panel1.Controls.Count;
//DataTable dt = GetData();
//for (int i = 0; i < Panel1.Controls.Count; i++)
//{
// if (Panel1.Controls[i].GetType().Name == "webusercontrol_ascx")
// {
// ((WebUserControl)Panel1.Controls[i]).SetDll(dt);
// }
//}
//GridView1.DataSource = GetData();
//this.GridView1.DataBind();
}
//BindData();
}
private DataTable GetData()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Text");
dt.Columns.Add("Num");
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i.ToString();
dr[1] = "Name_" + i.ToString() + "_Name";
dr[2] = i.ToString();
dr[3] = "0";
dt.Rows.Add(dr);
}
return dt;
}
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = GetData();
//GridView1.DataSource = dt;
//this.GridView1.DataBind();
ViewState["dt"] = dt;
BindData();
//WebUserControl w1 = new WebUserControl();
////DataTable dt = GetData();
////w1.SetDll(dt);
//Random rd = new Random(3);
//int tt = rd.Next(1, 1111);
//TextBox1.Text = Panel1.Controls.Count.ToString();
//Panel1.Controls.Add(w1);
//Panel1.Controls.Add(new LiteralControl(DateTime.Now.TimeOfDay.ToString()));
//TextBox1.Text = Panel1.Controls.Count.ToString();
//Button bt = new Button();
//bt.Text = "bbb";
//bt.ID = Panel1.Controls.Count.ToString()+"1";
//Panel1.Controls.Add(bt);
}
private void SaveData(ref DataTable dt)
{
int rowcound = dt.Rows.Count;
for (int i = 0; i < rowcound; i++)
{
dt.Rows[i][3] = ((TextBox)(GridView1.Rows[i].FindControl("txtBox"))).Text.Trim();
}
}
protected void btnAddrow_Click(object sender, EventArgs e)
{
DataTable dt;
if (ViewState["dt"] != null)
{
dt = (DataTable)ViewState["dt"];
SaveData(ref dt);
}
else
{
dt = GetData();
}
DataRow dr = dt.NewRow();
dr[0] = dt.Rows.Count.ToString();
dr[1] = "AddName" + dt.Rows.Count.ToString();
dr[2] = dt.Rows.Count.ToString();
dr[3] = "0";
dt.Rows.Add(dr) ;
//GridView1.DataSource = dt;
//this.GridView1.DataBind();
ViewState["dt"] = dt;
BindData();
//GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal);
//或实现一个数据行
//GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal);
//设置行的底色
//rowSeparator.BackColor = System.Drawing.Color.White;
//设置单元格集
//可以根据实际情况设置,我在这儿是根据RowDataBound事件(e参数)来设置的
//TableCellCollection cells = e.Row.Cells;
//设置单元格,根据实际情况增加,我这儿是增加一个跨所有列的行
//TableCell separatorCell = new TableCell();
//根据GridView的第一列的显示情况设置单元格和跨列数
//if (GridView1.Columns[0].Visible == true)
//{
// separatorCell.ColumnSpan = cells.Count;
//}
//else
//{
// separatorCell.ColumnSpan = cells.Count - 1;
//}
//单元格的对齐
//separatorCell.HorizontalAlign = HorizontalAlign.Right;
//单元格的背景色
//separatorCell.BackColor = System.Drawing.Color.FromArgb(226, 226, 226);
//单元格的高度
//separatorCell.ControlStyle.Height = 5;
//在单元格集中增加单元格控件
//rowSeparator.Cells.Add(separatorCell);
//设置GridView行的可见性
//rowSeparator.Visible = true;
//在GridView中的相应行插入行
//GridView1.Controls[0].Controls.AddAt(GridView1.Rows.Count+1, rowSeparator);
//GridView1.Controls[0].Controls.Add(rowSeparator);
}
//protected void txtBox_TextChanged(object sender, EventArgs e)
//{
// TextBox t = (TextBox)sender;
// GridViewRow drv = (GridViewRow)t.NamingContainer;
// int rowIndex = drv.RowIndex;
// txtInfo.Text = ((TextBox)GridView1.Rows[drv.RowIndex].FindControl("txtBox")).Text;
//}
protected void btnDel_Click(object sender, EventArgs e)
{
txtInfo.Text = "Del";
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
//if (e.CommandName == "Del")
//{
// txtInfo.Text = e.CommandArgument.ToString();
//}
}
private void BindData()
{
if (ViewState["dt"] !=null)
{
GridView1.Columns[0].Visible = true;
DataTable dt = (DataTable)ViewState["dt"];
GridView1.DataSource = dt;
this.GridView1.DataBind();
GridView1.Columns[0].Visible = false;
}
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
DataTable dt = (DataTable)ViewState["dt"];
int selectIndex = e.RowIndex;
//这里的 Cells[1] 对应的是编号列
//DataRow[] dr = dttt.Select("ID=" + this.GridView1.Rows[selectIndex].Cells[0].Text);
//if (dr.Length > 0)
//{
// dttt.Rows.Remove(dr[0]);
//}
int irow = dt.Rows.Count;
string strID = this.GridView1.Rows[selectIndex].Cells[0].Text;
SaveData(ref dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i][0].ToString() == strID)
{
dt.Rows.RemoveAt(i);
break;
}
}
//GridView1.DataSource = dt;
//this.GridView1.DataBind();
ViewState["dt"] = dt;
BindData();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
protected void btnExcel_Click(object sender, EventArgs e)
{
//Response.ClearContent();
//Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
//Response.ContentType = "application/excel";
//StringWriter sw = new StringWriter();
//HtmlTextWriter htw = new HtmlTextWriter(sw);
//GridView1.RenderControl(htw);
//Response.Write(sw.ToString());
//Response.End();
ToExcel(GridView1,"我们");
}
public void ToExcel(System.Web.UI.Control ctl, string FileName)
{
HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");
HttpContext.Current.Response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls\"");
//HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
ctl.RenderControl(hw);
try
{
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
catch(System.Threading.ThreadAbortException ed)
{
//txtInfo.Text = ed.Message;
throw;
}
//Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");
//Response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode("中文名", System.Text.Encoding.UTF8) +
//".xls\"");
}
}
浙公网安备 33010602011771号