.ASPX页面<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000" bordercolordark="#fffce1">  
          <asp:Repeater ID="repQuestion" runat="server" 
                  onitemdatabound="repQuestion_ItemDataBound">
            <ItemTemplate>
              <tr>
                <td width="5%" align="left">&nbsp;<%# Eval("Title")%></td>
              </tr>
              <tr>
                <td width="5%" align="center">&nbsp;<asp:Panel ID="myPanel" runat="server">
              </asp:Panel></td>
              </tr>
              <tr>
                <td>
<hr size="1" noshade style="border:1px dotted #FFFFFF"> </td>
              </tr>
            </ItemTemplate>
          </asp:Repeater>
          </table>     .CS页面:
protected void Page_Load(object sender, EventArgs e)
    {
        if (IsOnline())
        {
            if (Request.QueryString["GroupID"] != null)
            {
                string sql = "Select QuestionID,Title,OptionType from Question Where GroupID=" + Request.QueryString["GroupID"].ToString();
                SqlDataReader myRead = ut.GetSqlDataReader(sql);
                repQuestion.DataSource = myRead;
                repQuestion.DataBind();
                myRead.Close();
                //Response.Write(sql);
            }
        }
    }
    protected void repQuestion_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Panel myPanel = (Panel)e.Item.FindControl("myPanel");
        
        //myPanel.Controls.Add(lt);
    }目的:
请问怎么在ItemDataBound里得到QuestionID和OptionType的值,从而根据这两个值来让myPanel加载不同类型的控件。

解决方案 »

  1.   

    前台<asp:Literal ID="literal1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"QuestionID")%>'asp:Literal>
    <asp:Literal ID="literal2" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"OptionType")%>'asp:Literal>后台 if (e.Row.RowType == DataControlRowType.DataRow)
     {
              Literal literaId = e.Row.FindControl("literal1") as Literal;
              Literal literaType = e.Row.FindControl("literal2") as Literal;
              string questionId=literaId.Text;
              string questoonType=literaType.Text;}
      

  2.   

    手写的 前台弄两个Literal  把值绑定上去 后台ItemDataBound事件中获取
      

  3.   

    模板列里放两个隐藏的Label 绑定后就可以拿出来用啊
      

  4.   

    本帖最后由 net_lover 于 2010-08-16 17:06:20 编辑
      

  5.   

    不同的数据源,System.Data.Common.DbDataRecord类型不同,参见
    http://dotnet.aspx.cc/article/84ce8775-b0eb-41a5-b9d4-e5b8352203cd/read.aspx
      

  6.   

    判断是这个
      if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
      

  7.   

      protected void repQuestion_ItemDataBound(object sender, RepeaterItemEventArgs e)
      {
      Panel myPanel = (Panel)e.Item.FindControl("myPanel");  DataRowView drv = e.Item.DataItem as DataRowView;
      int QuestionID = (int)drv["QuestionID"];  //myPanel.Controls.Add(lt);
      }目的:
    请问怎么在ItemDataBound里得到QuestionID和OptionType的值,从而根据这两个值来让myPanel加载不同类型的控件。
      

  8.   

    你前台的ItemTemplate中根本没有绑定QuestionID和OptionType数据,后台你又怎么得到它们的值