首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

用GridView实现孟子的DataGrid跨页多选,大家来看看错在哪里了。解决办法

2012-01-22 
用GridView实现孟子的DataGrid跨页多选,大家来看看错在哪里了。Default.aspx:%@PageLanguage C# AutoEv

用GridView实现孟子的DataGrid跨页多选,大家来看看错在哪里了。
Default.aspx:
<%@   Page   Language= "C# "   AutoEventWireup= "true "     CodeFile= "Default.aspx.cs "   Inherits= "_Default "   %>

<!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> GridView实现跨页多选 </title>
        <script   type= "text/javascript ">
                function   AddRemoveValues(oChk)  
                {  
                        //在处理这个地方需要注意的是:你保存的值应该具有唯一性,这样才能不会替换错误的项。
                        if(oChk.checked)
                                document.getElementById( "HdnSelectedValues ").value   +=   ", "   +   oChk.value;  
                        else
                                document.getElementById( "HdnSelectedValues ").value   =   document.getElementById( "HdnSelectedValues ").value.replace( ", "   +   oChk.value, " ");  
                }
</script>
</head>
<body>
        <form   id= "form1 "   runat= "server ">
                <table   align= "center "   border= "1 ">
                        <tr>
                                <td   align= "center ">
                                        <asp:GridView   ID= "GridView1 "   runat= "server "   AutoGenerateColumns= "False "   CellPadding= "4 "   ForeColor= "#333333 "   GridLines= "None "   AllowPaging= "True "   OnPageIndexChanging= "GridView1_PageIndexChanging "   OnRowCreated= "GridView1_RowCreated "   OnRowDataBound= "GridView1_RowDataBound ">
                                                <FooterStyle   BackColor= "#990000 "   Font-Bold= "True "   ForeColor= "White "   />
                                                <RowStyle   BackColor= "#FFFBD6 "   ForeColor= "#333333 "   />
                                                <SelectedRowStyle   BackColor= "#FFCC66 "   Font-Bold= "True "   ForeColor= "Navy "   />


                                                <PagerStyle   BackColor= "#FFCC66 "   ForeColor= "#333333 "   HorizontalAlign= "Center "   />
                                                <HeaderStyle   BackColor= "#990000 "   Font-Bold= "True "   ForeColor= "White "   />
                                                <AlternatingRowStyle   BackColor= "White "   />
                                                <Columns>
                                                        <asp:TemplateField   HeaderText= "选择 ">
                                                                <ItemTemplate>
                                                                        <input   type= "checkbox "   runat= "server "   id= "chkSelect "   onclick= "AddRemoveValues(this) "   value= ' <%#   DataBinder.Eval(Container.DataItem, "id ")%> '/>
                                                                </ItemTemplate>
                                                        </asp:TemplateField>
                                                        <asp:BoundField   DataField= "id "   HeaderText= "文章编号 "   />
                                                        <asp:BoundField   DataField= "Title "   HeaderText= "文章标题 "   />
                                                        <asp:BoundField   DataField= "CreateDate "   HeaderText= "文档创建时间 "   />
                                                </Columns>


                                        </asp:GridView>
                                </td>
                        </tr>
                        <tr>
                                <td   align= "center ">
                                        <asp:Button   ID= "Button1 "   runat= "server "   Text= "显示选中项的ID "   OnClick= "Button1_Click "   />
                                </td>
                        </tr>
                        <tr>
                                <td   align= "center ">
                                        <asp:TextBox   ID= "HdnSelectedValues "   runat= "server "> </asp:TextBox>
                                </td>
                        </tr>
                        <tr>
                                <td   align= "left ">
                                        <asp:label   id= "Label1 "   runat= "server "> </asp:label>
                                </td>
                        </tr>
                </table>
        </form>
</body>
</html>

Default.aspx.cs:
using   System;
using   System.Data;
using   System.Data.OleDb;
using   System.Configuration;
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;

public   partial   class   _Default   :   System.Web.UI.Page  
{
        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                if   (!Page.IsPostBack)
                {


                        GridViewDataBind();
                }
        }

        protected   void   GridViewDataBind()
        {
                OleDbConnection   conn   =   new   OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= "   +   Server.MapPath( "aspx.mdb "));
                OleDbDataAdapter   oda   =   new   OleDbDataAdapter( "SELECT   id,Title,CreateDate   from   Document ",   conn);
                DataSet   ds   =   new   DataSet();
                oda.Fill(ds);
                GridView1.DataSource   =   ds;
                GridView1.DataBind();
        }

        protected   void   GridView1_PageIndexChanging(object   sender,   GridViewPageEventArgs   e)
        {
                GridView1.PageIndex   =   e.NewPageIndex;
                GridViewDataBind();
        }

        protected   void   Button1_Click(object   sender,   EventArgs   e)
        {
                //   为了方便显示,将隐藏域的“,”替换为“ <li> ”标记
                Label1.Text   =   HdnSelectedValues.Text.Replace( ", ",   " <li> ");
        }

        protected   void   GridView1_RowCreated(object   sender,   GridViewRowEventArgs   e)
        {
                if   (HdnSelectedValues.Text   !=   " ")
                {
                        //重新显示所选择的项目
                        if   (HdnSelectedValues.Text.IndexOf(e.Row.Cells[1].Text)   > =   0)
                        {
                                HtmlInputCheckBox   ChkSelected   =   (HtmlInputCheckBox)(e.Row.Cells[0].FindControl( "ChkSelect "));
                                ChkSelected.Checked   =   true;
                        }
                }
        }
}

当记录那些id被选中的文本框得值不为空时,执行protected   void   GridView1_RowCreated(object   sender,   GridViewRowEventArgs   e)会提示e.Row.Cells[1]下标越界,其Text为null,请问大家这是怎么回事。

[解决办法]
使用RowDataBound

热点排行