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" />
        &nbsp;<asp:TextBox ID="txtInfo" runat="server" Height="58px" TextMode="MultiLine" Width="421px"></asp:TextBox>&nbsp;
       
         <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="BindData" />&nbsp;
        <asp:Button ID="btnAddrow" runat="server" OnClick="btnAddrow_Click" Text="AddRow" />&nbsp;
        <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>&nbsp;
                    </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>
        &nbsp;<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\"");
    }
   
}


 

posted on 2009-03-09 17:25  KenL  阅读(654)  评论(0)    收藏  举报

导航