Текстовое поле внутри элемента повторителя пустое

#c# #asp.net

#c# #asp.net

Вопрос:

Шаблон repeater:

 <ItemTemplate>          
                <div style="width:100%">
                    <asp:Label style="display:none" ID="ArticleID" runat="server" text='<%# DataBinder.Eval(Container.DataItem, "ArticleID") %>'></asp:Label>
                    <asp:TextBox ID="ArticleOrder" runat="server"  Width="20px" value='<%# DataBinder.Eval(Container.DataItem, "Order") %>'></asp:TextBox> 
                    amp;nbsp;
                    <a title="Edit Article"  href="javascript:void(0)" onclick="parent.document.location.href='/cms/Secured/Article/EditArticle.aspx?ArticleID=<%# DataBinder.Eval(Container.DataItem, "ArticleID") %>'"><%# DataBinder.Eval(Container.DataItem, "Title") %> </a>
                    amp;nbsp;
                    <asp:LinkButton  id="delll" runat="server"   OnCommand ="Del" CommandName ='<%# DataBinder.Eval(Container.DataItem, "ArticleID") %>'>(Delete)</asp:LinkButton>

                    <a   href="javascript:void(0)" onclick="window.open('CategoryArticleLocationReplace.aspx?Action=updateamp;CategoryID=<%# Request.QueryString["CategoryID"].ToString()%>amp;LocationID=<%# Request.QueryString["LocationID"].ToString()%>amp;OldArticleID=<%# DataBinder.Eval(Container.DataItem, "ArticleID") %>',null, 'height=200,width=200,status=no,toolbar=no' )">(Replace Article)</a>
                    amp;nbsp;

                </div>

            </ItemTemplate> 
  

Код обновления базы данных:

 protected void up_Click1(object sender, EventArgs e)
{
    foreach(RepeaterItem _item in rptArticleList.Items)
    {
        dcLigdol DB = new dcLigdol();
        TextBox tbArticleOrder = (TextBox)_item.FindControl("ArticleOrder");
        Label lblArticleID = (Label)_item.FindControl("ArticleID");
        byte ArticleOrder;
        if(tbArticleOrder.Text.Trim() == "")
            ArticleOrder = byte.Parse("99");
        else
            ArticleOrder = byte.Parse(tbArticleOrder.Text.Trim());
        int ArticleID = int.Parse(lblArticleID.Text.Trim());
        int CategoryID = int.Parse(Request.QueryString["CategoryID"].ToString().Trim());
        byte LocationID = byte.Parse(Request.QueryString["LocationID"].ToString().Trim());
        DB.spCategory_Article_Location_Order_Update(ArticleID, ArticleOrder, CategoryID, LocationID);

    }
    Show();
}
  

Если я помещаю точку торможения в цикл, я получаю tbArticleOrder.Текст = «» каждый раз.
Я не могу понять, почему это не работает.
Спасибо!

Комментарии:

1. Вы не будете повторно привязывать Repeater к post обратно, не так ли?

2. Функция Show () повторно привязывает repeater, но это только после обновления. Это полный обработчик нажатия кнопки.

3. Когда страница загружается, и вы изначально привязываете повторитель, находится ли это в пределах !Page.IsPostBack ?

4. @Tim: Спасибо! Только что понял, что мой партнер-идиот по программированию закрыл! Является ли postback оставлением первого вызова Show () за пределами фигурных скобок 🙂 Не возражаете добавить ответ, чтобы я мог отдать вам должное?

Ответ №1:

Убедитесь, что вы не повторно привязываете repeater при обратной передаче страницы.

Вставьте исходный код, который привязывает repeater к !Page.IsPostBack условию 🙂