Не могу получить данные из моего текстового поля и выпадающего списка внутри повторителя

Привет я пытаюсь получить две данные из моих элементов управления внутри повторителя (txtComment и ddlServiceStatus), чтобы я мог выполнить мой оператор вставки в btnNewComment, но я не могу получить какие-либо данные. Вот мой код, пожалуйста, помогите мне.

<asp:Repeater ID="Repeater1" runat="server"
        onitemdatabound="Repeater1_ItemDataBound">
    <ItemTemplate>
<table border="1" cellpadding="0" cellspacing="2" style="font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 13px; border-collapse: collapse; border-color:Black;"
        width="900px">
<tr style="color: #FFFFFF; background-color: #FF0000">
<td>Service Name</td> <td>Date</td><td>Channel Name</td><td>User Name</td><td>Msisdn</td><td>Status</td>
</tr>
<tr>
<td><asp:Label ID="lblService" runat="server" Text='<%# Eval("serviceName") %>'></asp:Label></td>
<td><asp:Label ID="lblDate" runat="server" Text='<%# Eval("date") %>'></asp:Label></td>
<td><asp:Label ID="lblChannelName" runat="server" Text='<%# Eval("channelName") %>'></asp:Label></td>
<td><asp:Label ID="lblUserName" runat="server" Text='<%# Eval("userName") %>'></asp:Label></td>
<td><asp:Label ID="lblMsisdn" runat="server" Text='<%# Eval("msisdn") %>'></asp:Label></td>
<td><asp:Label ID="lblStatus" runat="server" Text='<%# getStatusName(Eval("status")) %>'></asp:Label></td>   
</tr><tr><td colspan="6"><asp:Label ID="lblComment" runat="server" Text='<%# Eval("comment") %>' Width="900px"></asp:Label></td></tr>

<tr>
<td style="text-align:center;" colspan="6"><div><br /><a href="#" class="ToggleTikla" >
    <img src="../images/continuebtn.jpg" /> </a>

    <div id="fader"><br /> <asp:TextBox ID="txtComment" runat="server" TextMode="MultiLine" Width="900px" BorderStyle="Solid" BorderColor="Black" BackColor="#CCFFFF"></asp:TextBox><br />
        <asp:DropDownList ID="ddlServiceStatus" runat="server" ></asp:DropDownList>
       <asp:Button ID="btnNewComment" runat="server" Text="New Comment" ForeColor="White" BackColor="Red" Font-Bold="True" onclick="btnNewComment_Click" />     
        <br /><br />
        <asp:Repeater ID="rpNested" runat="server">
        <ItemTemplate>
        <table border="1" cellpadding="0" cellspacing="2" style="font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 13px; border-collapse: collapse; border-color:Black; text-align:left;" width="900px">

        <tr style="color: #FFFFFF; background-color: #FF0000">
        <td>Name</td>
        <td>Date</td>
        <td>Status</td>
        </tr>
        <tr>
        <td><asp:Label ID="lblExUserName" runat="server" Text='<%# Eval("Tester") %>'></asp:Label> </td>
         <td><asp:Label ID="lblExDate" runat="server" Text='<%# Eval("Date") %>'></asp:Label></td>
         <td><asp:Label ID="lblExstatus" runat="server" Text='<%# getStatusName(Eval("status")) %>'></asp:Label></td>    
        </tr>
        <tr><td colspan="3">
            <asp:Label ID="lblExCommand" runat="server" Text='<%# Eval("Comment") %>'></asp:Label></td></tr>
        </table> <br /><br />  
        </ItemTemplate>
        </asp:Repeater>
 </div>

</div>
</td>

 protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
        {
            if (txtAlert.Text.Length > 0)//if user entered an alertid
            {
                int alertID;
                try
                {
                    alertID = Convert.ToInt32(txtAlert.Text);//convert alertid to int alertid
                }
                catch (Exception ex)
                {
                    return;//do nothing user not entered a valid alertid
                }
            }
            SqlDataAdapter adp = new SqlDataAdapter("aaa_GetAlertbyUserID", _con);
            adp.SelectCommand.CommandType = CommandType.StoredProcedure;
            adp.SelectCommand.Parameters.AddWithValue("@userID", DropDownList1.SelectedValue);
            adp.SelectCommand.Parameters.AddWithValue("@alertID", txtAlert.Text);

            //create and show search results
            DataSet ds = new DataSet();
            adp.Fill(ds);
            Repeater1.DataSource = ds;
            Repeater1.DataBind();
            //ds.Relations.Add(new DataRelation("alertComments",ds.Tables[0].Columns["ID"],ds.Tables[1].Columns["ID"]));
            //rpAlert.DataSource = ds;
            //rpAlert.DataBind();

            foreach (RepeaterItem ritem in Repeater1.Items)
            {
                DropDownList ddl = ritem.FindControl("ddlServiceStatus") as DropDownList;
                ddl = getAlertStatusList(ddl);
                TextBox txt = ritem.FindControl("txtComment") as TextBox;
                Button btn = ritem.FindControl("btnNewComment") as Button;
                //btn.Click += new EventHandler(btn_Click);
            }



        }

        private DropDownList getAlertStatusList(DropDownList ddl)
        {
            ddl.Items.Clear();
            SqlDataAdapter adp = new SqlDataAdapter("pr_GetAlertStatusList", _con);
            adp.SelectCommand.CommandType = CommandType.StoredProcedure;
            DataTable dt = new DataTable();
            adp.Fill(dt);
            ddl.DataSource = dt;
            ddl.DataValueField = "ID";
            ddl.DataTextField = "Name";
            ddl.DataBind();
            ddl.Items.Insert(0, "Please Select Status");
            return ddl;

        }

      protected void btnNewComment_Click(object sender, EventArgs e)
        {
            var status = Convert.ToInt32(((DropDownList)Repeater1.FindControl("ddlServiceStatus")).SelectedValue);
            var comment = ((TextBox)Repeater1.FindControl("txtComment")).Text;


            if (comment.Length == 0)
            {
                return;  
            }
            else
            {

                try
                {
                    int alertID = Convert.ToInt32(txtAlert.Text);
                    SqlDataAdapter adp = new SqlDataAdapter("aaa_InsertAlertCommentwithStatust", _con);  //
                    adp.SelectCommand.CommandType = CommandType.StoredProcedure;
                    adp.SelectCommand.Parameters.AddWithValue("@alertID", alertID);
                    adp.SelectCommand.Parameters.AddWithValue("@userID", DropDownList1.SelectedValue);
                    adp.SelectCommand.Parameters.AddWithValue("@date", DateTime.Now);
                    adp.SelectCommand.Parameters.AddWithValue("@comment", comment);
                    adp.SelectCommand.Parameters.AddWithValue("@status", status - 1);
                    DataSet ds = new DataSet();
                    adp.Fill(ds);
                    adp.SelectCommand.ExecuteNonQuery();
                }
                catch (Exception x)
                {

                    lblInfo.Text = "Error" + x.Message;
                }
            }
        }

1 ответ

В большинстве мест ваш открывающий и закрывающий тег имеют неправильный формат. Вы начали table тег,asp:Repeater тег, но нет closing tag. Так что сначала улучшите в этой области. Теперь перейдите к решению вашей проблемы. Ваш первый asp:Repeater не иметь closing tag так в code behind Вы не можете принять значение control,

Ниже HTML в правильном формате:

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <table border="1" cellpadding="0" cellspacing="2" style="font-family: Arial, Helvetica, sans-serif;
            font-weight: bold; font-size: 13px; border-collapse: collapse; border-color: Black;"
            width="900px">
            <tr style="color: #FFFFFF; background-color: #FF0000">
                <td>
                    Service Name
                </td>
                <td>
                    Date
                </td>
                <td>
                    Channel Name
                </td>
                <td>
                    User Name
                </td>
                <td>
                    Msisdn
                </td>
                <td>
                    Status
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="lblService" runat="server" Text='<%# Eval("serviceName") %>'></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lblDate" runat="server" Text='<%# Eval("date") %>'></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lblChannelName" runat="server" Text='<%# Eval("channelName") %>'></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lblUserName" runat="server" Text='<%# Eval("userName") %>'></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lblMsisdn" runat="server" Text='<%# Eval("msisdn") %>'></asp:Label>
                </td>
                <td>
                    <%--<asp:Label ID="lblStatus" runat="server" Text='<%# getStatusName(Eval("status")) %>'></asp:Label>--%>
                </td>
            </tr>
            <tr>
                <td colspan="6">
                    <asp:Label ID="lblComment" runat="server" Text='<%# Eval("comment") %>' Width="900px"></asp:Label>
                </td>
            </tr>
            <tr>
                <td style="text-align: center;" colspan="6">
                    <div>
                        <br />
                        <a href="#" class="ToggleTikla">
                            <img src="../images/continuebtn.jpg" />
                        </a>
                    </div>
                </td>
            </tr>
        </table>
        <div id="fader">
            <br />
            <asp:TextBox ID="txtComment" runat="server" TextMode="MultiLine" Width="900px" BorderStyle="Solid"
                BorderColor="Black" BackColor="#CCFFFF"></asp:TextBox><br />
            <asp:DropDownList ID="ddlServiceStatus" runat="server">
            </asp:DropDownList>
            <asp:Button ID="btnNewComment" runat="server" Text="New Comment" ForeColor="White"
                BackColor="Red" Font-Bold="True" OnClick="btnNewComment_Click" />
            <br />
            <br />
        </div>
    </ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="rpNested" runat="server">
    <ItemTemplate>
        <table border="1" cellpadding="0" cellspacing="2" style="font-family: Arial, Helvetica, sans-serif;
            font-weight: bold; font-size: 13px; border-collapse: collapse; border-color: Black;
            text-align: left;" width="900px">
            <tr style="color: #FFFFFF; background-color: #FF0000">
                <td>
                    Name
                </td>
                <td>
                    Date
                </td>
                <td>
                    Status
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="lblExUserName" runat="server" Text='<%# Eval("Tester") %>'></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lblExDate" runat="server" Text='<%# Eval("Date") %>'></asp:Label>
                </td>
                <td>
                    <%--  <asp:Label ID="lblExstatus" runat="server" Text='<%# getStatusName(Eval("status")) %>'></asp:Label>--%>
                </td>
            </tr>
            <tr>
                <td colspan="3">
                    <asp:Label ID="lblExCommand" runat="server" Text='<%# Eval("Comment") %>'></asp:Label>
                </td>
            </tr>
        </table>
        <br />
        <br />
    </ItemTemplate>
</asp:Repeater>
Другие вопросы по тегам