关于repeater中的控件ID查找(含一些常用控件及不常用的SelectedIndexChanged事件) .

 

新加三层查找id

  1. protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)  
  2.        {  
  3.            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)  
  4.            {  
  5.                RadioButtonList RadList = (RadioButtonList)e.Item.FindControl("rblOption");  
  6.                // 方式一,使用隐藏控件来取ID   
  7.                //HiddenField hidQID = (HiddenField)e.Item.FindControl("hidQID");   
  8.                //string QID = hidQID.Value.ToString();   
  9.                //方式二  使用Model型层来获取id.   
  10.                MODEL.exam ss = (MODEL.exam)e.Item.DataItem;  
  11.                string QID = ss.Id.ToString();  
  12.   
  13.                GetExam bll = new GetExam();  
  14.                List<Option> opts = bll.getListAllExamOption(QID);  
  15.                foreach (Option opt in opts)  
  16.                {  
  17.                    RadList.Items.Add(new ListItem(opt.Opt.ToString(), opt.Score.ToString()));  
  18.                }  
  19.            }  
  20.        }  


 

在.net数据控件中绑定了一些常用控件,我们的要对这些控件进行操作的话,就要编写代码对控件ID进行查找。一般的用ID来查找是不行。现在总结下如何使用。

代码如下:

  1. protected void rptPaper_ItemDataBound(object sender, RepeaterItemEventArgs e)  
  2.     {  
  3.         if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)  
  4.         {  
  5.             ListBox lb = (ListBox)e.Item.FindControl("ListBox1");  //listbox   
  6.   
  7.             //Panel PanelShowText = (Panel)e.Item.FindControl("PanelShowText");   
  8.             //Panel PanelImgShow = (Panel)e.Item.FindControl("PanelImgShow");   
  9.             //Image imgShow = (Image)e.Item.FindControl("imgShow");  //image   
  10.   
  11.             //string QID = ((DataRowView)e.Item.DataItem).Row["ID"].ToString();   //datarowview 是查找repeater的ID   
  12.             //string strsql = "SELECT * FROM radiotable where ID='" + QID + "'";   
  13.             //DataTable dt = DtDB.GetDataTable(strsql);   
  14.             //if (dt.Rows.Count > 0)   
  15.             //{   
  16.             //    判断是否有图   
  17.             //    string imgpath = dt.Rows[0]["imgPath"].ToString();   
  18.             //    if (imgpath == null || imgpath == "")   
  19.             //    {   
  20.             //        PanelImgShow.Visible = false;   
  21.             //        PanelShowText.Visible = true;   
  22.             //    }   
  23.             //    else   
  24.             //    {   
  25.             //        PanelShowText.Visible = false;   
  26.             //        PanelImgShow.Visible = true;   
  27.             //        imgShow.ImageUrl = "~/upFile/" + imgpath;   
  28.             //    }   
  29.             //    tbContent.Text = dt.Rows[0]["QTitle"].ToString();   
  30.             //    string ss = dt.Rows[0]["QContent"].ToString();   
  31.             //    string Qfeng = dt.Rows[0]["QFeng"].ToString();   
  32.             //    //string    
  33.             //    string[] sArr = ss.Split('|');   
  34.             //    string[] sArrQFeng = Qfeng.Split('|');   
  35.             //    RadList.Items.Clear();   
  36.             //    for (int i = 0; i < (sArr.Length - 1); i++)   
  37.             //    {   
  38.             //        RadList.Items.Add(new ListItem(sArr[i].ToString().Trim(), sArrQFeng[i].ToString().Trim()));   
  39.             //        //lblFeng.Text += sArrCx[i].ToString().Trim();   
  40.             //        //RadList.Items = "styled";   
  41.             //    }   
  42.             //}   
  43.             //dt.Dispose();   
  44.             //RadList.DataSource=   
  45.         }  
  46.     }  

 

这是在repeater中进行查找。在repeater控件外进行查找时。

 

代码如下:

  1. protected void btnRest_Click(object sender, EventArgs e)  
  2.     {  
  3.         for (int i = 0; i < this.rptPaper.Items.Count; i++)  
  4.         {  
  5.             ListBox lb2 = (ListBox)this.rptPaper.Items[i].FindControl("ListBox2");  
  6.             lb2.Items.Clear();  
  7.         }  
  8.         BuildPaper();  
  9.     }  

 

当然在repeater中的按钮事件可以用如下方法:

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. protected void RptContact_ItemCommand(object source, RepeaterCommandEventArgs e)  
  2.     {  
  3.         if (e.CommandName == "Delete")  
  4.         {  
  5.             long ContID = Convert.ToInt64(e.CommandArgument.ToString()) ;  
  6.             DeleteContact(ContID);  
  7.             DataBindContact();  
  8.         }  
  9.     }  

 

这是一些常用的按钮事件。网上有很多详细介绍。

这里就不再多提了。我主要介绍下在repeater中的一些不是按钮事件的指定。如:ListBox中的SelectedIndexChanged事件。本事件不用在repeater中的ItemCommand中写了。跟平时使用该事件的编写是一样的。

代码如下:

  1. protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)  
  2.     {  
  3.         for (int i = 0; i < this.rptPaper.Items.Count; i++)  
  4.         {  
  5.             ListBox lb = (ListBox)this.rptPaper.Items[i].FindControl("ListBox1");  
  6.             ListBox lb2 = (ListBox)this.rptPaper.Items[i].FindControl("ListBox2");  
  7.             TextBox tbHidAnswer = (TextBox)rptPaper.Items[i].FindControl("tbHidAnswer");  
  8.             string slb = lb.SelectedValue;  
  9.             tbHidAnswer.Text += slb + ",";  
  10.             DtDB.AlertForPage(Page, tbHidAnswer.Text);  
  11.             if (lb.SelectedIndex != -1)                 //有选中的    
  12.             {  
  13.                 foreach (ListItem item in lb.Items)  
  14.                 {  
  15.                     if (item.Selected)  
  16.                     {  
  17.                         lb2.Items.Add(item);  
  18.                     }  
  19.                 }  
  20.             }  
  21.             lb.Items.RemoveAt(lb.SelectedIndex);  
  22.         }  
  23.     }  

附加:

linkbutton

  1. protected void ltbnPre_click(object sender, EventArgs e)  
  2.    {  
  3.        string Pid = ((LinkButton)sender).CommandArgument.ToString();  

注:此例是在VS2008中编译通过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值