Проблемы обратной передачи в веб-контроле пользователя - PullRequest
0 голосов
/ 05 декабря 2011

Я новичок в ASP.net, и у меня есть вопрос относительно обратной передачи.

У меня есть Senario, подобный этому:

1) У меня есть сетка в сети с панельюinside.

2) Я «вставляю» панель с пользовательским веб-элементом управления, вызывая это

 Control ctlControl;
 ctlControl = LoadControl("~/UserControls/ChequeCreation.ascx");
 pnlTransaction.Controls.Add(ctlControl);

3) Веб-пользовательский элемент управления предоставляет две кнопки.Один из них - «обновление», а другой - «сброс».

Проблема в том, что здесь:

Чего я хотел добиться, так это когда я нажимаю кнопку «обновить», он обновляет что-то обратно на мойDB?Но, кажется, после того, как я нажимаю кнопку «Обновить» или «Сброс».Пользовательский веб-элемент управления отсутствует или отсутствует.Для моего гостя это из-за проблем с обратной передачей?Это правильно?

Я пытался, если (! Postback) все еще не работает.

Как мне это преодолеть?Я уже почесал голову около дня?

Спасибо вам большое.

С уважением

LiangCk:

PS: Извините за мой уровень английского, ипожалуйста, не стесняйтесь высказать мою ошибку или ошибку.

Ответы [ 4 ]

1 голос
/ 05 декабря 2011

Вы должны каждый раз перезагружать пользовательский элемент управления на Page_Init или Page_Load.Затем вы можете получить событие нажатия кнопки, и после этого пользовательский контроль не будет потерян.

private void LoadUserControl(){

   string controlPath = LastLoadedControl;

    if (!string.IsNullOrEmpty(controlPath)) {
        PlaceHolder1.Controls.Clear();
        UserControl uc = (UserControl)LoadControl(controlPath);
        PlaceHolder1.Controls.Add(uc);
    }
}

protected void Page_Load(object sender, EventArgs e) {  
   LoadUserControl();
}
1 голос
/ 05 декабря 2011

если вы используете AJAX, попробуйте добавить панель обновления на странице дизайна UCT

1 голос
/ 05 декабря 2011

ASP.NET не будет сохранять динамически добавленный пользовательский элемент управления между постбэками.Вот почему это исчезает.Вам нужно будет добавлять элемент управления каждый раз, когда страница создается.Однако вам нужно будет добавить его при инициализации дерева элементов управления и восстановить исходный идентификатор элемента управления, если вы хотите, чтобы ваши события запускались.Эти ссылки дают полное объяснение http://www.4guysfromrolla.com/articles/092904-1.aspx и http://avinashsing.sunkur.com/2011/02/24/dynamic-controls-viewstate-and-postback/

1 голос
/ 05 декабря 2011

Вы можете преобразовать любой из ваших столбцов данных в столбец шаблона, а затем перетащить в него свой веб-элемент управления

это приведет к что-то вроде следующей проверки кода, где "uc1: webUserControle1" находится в коде

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDB">
            <Columns>
                <asp:TemplateField HeaderText="ID" SortExpression="ID">
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
                        <uc1:webUserControle1 ID="WebUserControle1_1" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
            </Columns>
        </asp:GridView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...