rowcommand в динамически создаваемых сетках - PullRequest
0 голосов
/ 03 апреля 2012

У меня серьезные проблемы с сеткой.Строка команды в моем динамически создаваемом gridview не запускается.

            Controls_ucOffice userControl = (Controls_ucOffice)LoadControl("~/Controls/ucOffice.ascx");
            userControl.ID = *Unique ID*

            GridView gvPhones =(GridView) userControl.FindControl("myGridView");
            gvPhones.DataSource = cPhoneList;
            gvPhones.DataBind();

            placeholder1.Controls.Add(userControl);

Я делаю несколько из этих элементов управления, и все они выглядят хорошо в виде сетки, с правильными данными.это делается нажатием кнопки, а не на page_load.

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

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
    <asp:GridView runat="server" ID="gvPhones" AutoGenerateColumns="false" OnRowDataBound="gvPhones_RowDataBound"
            OnRowCommand="gvPhones_RowCommand">
</ContentTemplate>
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="gvPhones" EventName="RowCommand" />
</Triggers>

после помещения их в панель обновления, при первом щелчке ничего не происходит, при втором щелчке исчезают все виды сетки (как в случае обратной передачи)

точка останова внижеприведенный метод rowcommand

protected void gvPhones_RowCommand(object sender, GridViewCommandEventArgs e)
{
    //do stuff
}

1 Ответ

0 голосов
/ 26 сентября 2012

Если вы привязываете сетку при загрузке страницы, как показано ниже

if(!IsPostBack)
{
    BindGrid();
}

, тогда получите BindGrid () из! IsPostBack.Означает, что вам нужно перепривязывать () сетку при каждой обратной передаче, если вы создаете сетку во время выполнения.

...