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

关于跨页面多选的有关问题(很奇怪)

2012-02-07 
关于跨页面多选的问题(很奇怪)曾看过孟子写的关于“跨页面多选的问题”一文,今又在一书上看到同样一文,例子

关于跨页面多选的问题(很奇怪)
曾看过孟子写的关于“跨页面多选的问题”一文,今又在一书上看到同样一文,例子是一样的只是数据库改啦!(不知改的是否有问题)现将代码和问题帖出来,请大家帮忙看看!
---------------------------------------
  <%@   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>
        <style   type= "text/css ">
*   {FONT-SIZE:12PX}
#Status   {text-align:left}
</style>
<script   language= "javascript "   type= "text/javascript ">
function   AddRemoveValues(oChk)   {  
//确定保存的值具有唯一性,这样才能不会替换错误的项。
if(oChk.checked)
from1.Hselcet.value   +=   ", "   +   oChk.value;  
else
from1.Hselcet.value   =   from1.Hselcet.value.replace( ", "   +   oChk.value, " ");  
}
</script>

</head>
<body>
        <form   id= "from1 "   runat= "server ">
<div   style= "text-align:center ">
<div   id= "Status ">
</div>
                        <table   border= "1 "   cellpadding= "0 "   cellspacing= "0 ">
                                <tr>
                                        <td   style= "text-align:   center ">
                                                跨页面多选 </td>
                                </tr>
                                <tr>
                                        <td   style= "text-align:   center ">
<asp:GridView   id= "GridView1 "   HorizontalAlign= "Center "   AutoGenerateColumns= "False "
AllowPaging= "True "   runat= "server "   PageSize= "5 "   OnPageIndexChanging= "GridView1_PageIndexChanging "   OnRowDataBound= "GridView1_RowDataBound "   Width= "472px ">
<HeaderStyle   BackColor= "#AAAADD "   Font-Bold= "True "   HorizontalAlign= "Center "> </HeaderStyle>
<PagerStyle   HorizontalAlign= "Right "> </PagerStyle>
<Columns>
<asp:TemplateField   HeaderText= "选择 ">
<ItemTemplate>
<input   type= "checkbox "   runat= "server "   id= "cbSelect "   onclick= "AddRemoveValues(this) "


value= ' <%#DataBinder.Eval(Container.DataItem, "学生姓名 ")%> '/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField   HeaderText= "学生ID ">
<ItemTemplate>
<asp:Literal   Text= ' <%#   DataBinder.Eval(Container.DataItem,   "学生ID ")   %> '   runat= "server "   ID= "ltID "/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField   HeaderText= "学生姓名 ">
<ItemTemplate>
<asp:Literal   ID= "ltName "   Text= ' <%#   DataBinder.Eval(Container.DataItem,   "学生姓名 ")%> '   runat= "server "/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField   HeaderText= "学生性别 ">
<ItemTemplate>
<asp:Literal   Text= ' <%#   DataBinder.Eval(Container.DataItem,   "学生性别 ")   %> '   runat= "server "   ID= "ltSex "/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField   HeaderText= "入校时间 ">
<ItemTemplate>
<asp:Literal   Text= ' <%#   DataBinder.Eval(Container.DataItem,   "入校时间 ")   %> '   runat= "server "   ID= "ltTime "/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
                                        </td>
                                </tr>
                                <tr>
                                        <td   style= "text-align:   center ">
<asp:button   id= "Button1 "   runat= "server "   Text= "得到所选的值 "   OnClick= "Button1_Click "> </asp:button>
<input   id= "Hselcet "   type= "hidden "   name= "Hselcet "   runat= "server "   /> </td>
                                </tr>
                                <tr>
                                        <td   style= "text-align:   center ">
                                                <table>
                                                        <tr>
                                                                <td   style= "text-align:left; ">


<asp:label   id= "Label1 "   runat= "server "> </asp:label> </td>
                                                        </tr>
                                                </table>
                                        </td>
                                </tr>
                        </table>
</div>
</form>
</body>
</html>
--------------------------------------
using   System;
using   System.Data;
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;
using   System.Data.SqlClient;

public   partial   class   _Default   :   System.Web.UI.Page  
{
        private   void   Page_Load(object   sender,   System.EventArgs   e)
        {
                //   在此处放置用户代码以初始化页面
                if   (!IsPostBack)
                {
                        bind();
                }
        }
        private   void   bind()
        {
                SqlConnection   sqlcon   =   new   SqlConnection( "Data   Source=(local);Database=db_04;Uid=sa;Pwd= ");
                SqlDataAdapter   myda   =   new   SqlDataAdapter( "Select   ID   as   学生ID,Name   as   学生姓名,Sex   as   学生性别,JoinTime   as   入校时间   from   tb_Student ",   sqlcon);
                DataSet   myds   =   new   DataSet();
                myda.Fill(myds);
                GridView1.DataSource   =   myds;
                GridView1.DataBind();
        }
        protected   void   GridView1_RowDataBound(object   sender,   GridViewRowEventArgs   e)
        {
                //重新显示所选择的项目
                if   (e.Row.RowType   ==   DataControlRowType.DataRow)
                {
                        if   (Hselcet.Value.IndexOf(((Literal)e.Row.Cells[1].FindControl( "ltName ")).Text)   > =   0)


                        {
                                HtmlInputCheckBox   hicbox   =   (HtmlInputCheckBox)(e.Row.Cells[0].FindControl( "cbSelect "));
                                hicbox.Checked   =   true;
                        }
                }
        }
        protected   void   GridView1_PageIndexChanging(object   sender,   GridViewPageEventArgs   e)
        {
                GridView1.PageIndex   =   e.NewPageIndex;
                bind();
        }
        protected   void   Button1_Click(object   sender,   EventArgs   e)
        {
                //为了显示的方便进行替换的
                Label1.Text   =   Hselcet.Value.Replace( ", ",   " <li> ");
        }
}
-------------------------------------
问题出现在这段代码:
if   (Hselcet.Value.IndexOf(((Literal)e.Row.Cells[1].FindControl( "ltName ")).Text)   > =   0)
                       
HtmlInputCheckBox   hicbox   =   (HtmlInputCheckBox)(e.Row.Cells[0].FindControl( "cbSelect "));

奇怪的是   Id为 "ltName "   的控件并不是放在Cells[1]里而是Cells[2]里的但他依然可以找到这个控件而且程序能够正确运行。
于是我尝试这把上面的两个改为e.Row.Cells[0],e.Row.Cells[1],e.Row.Cells[2],e.Row.Cells[3],e.Row.Cells[4]
它依然运行正确,我实在是不解啦!有谁能给我解释一下吗?

[解决办法]
呵呵!没遇到过帮LZ 顶下!

热点排行