Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
еще раз про AJAX
|
|||
|---|---|---|---|
|
#18+
есть следующая страница: <atlas:UpdatePanel Mode="Conditional" runat="server" ID="upGrid"> <ContentTemplate> <asp:GridView runat="server" ID="gv" DataSourceID="InventoryDataSource" AutoGenerateColumns="false" DataKeyNames="Id" OnRowDataBound="gv_RowDataBound" OnRowUpdating="gv_RowUpdating"> <Columns> <asp:TemplateField HeaderText="Community"> <ItemTemplate> <asp:Label runat="server" ID="lblCommunity"></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:DropDownList runat="server" ID="ddlCommunity"></asp:DropDownList> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Model #"> <ItemTemplate> <asp:Label runat="server" ID="lblModel"></asp:Label> </ItemTemplate> <EditItemTemplate> <atlas:UpdatePanel runat="server" Mode="Conditional" ID="upGridListing"> <ContentTemplate> <asp:DropDownList runat="server" ID="ddlListings"></asp:DropDownList> </ContentTemplate> </atlas:UpdatePanel> </EditItemTemplate> </asp:TemplateField> <asp:CommandField ButtonType="Image" ShowEditButton="true" ShowDeleteButton="true" EditImageUrl="~/images/icons/icon_edit.gif" DeleteImageUrl="~/images/icons/icon_delete.gif" CancelImageUrl="~/images/icons/icon_stop.gif" UpdateImageUrl="~/images/icons/icon_edit.gif" /> <asp:TemplateField> <ItemTemplate> <asp:Button runat="Server" ID="btnRefreshUpGridListing" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </ContentTemplate> </atlas:UpdatePanel> мне нужно — когда какая-либо строка в режиме редактирования и при смене значения ddlCommunity перебиндить ddlListings (без перегрузки страницы естественно). Для этого в gv_RowDataBound if ((e.Row.RowState & DataControlRowState.Edit) != 0) { DropDownList ddlCommunity = (DropDownList)e.Row.FindControl("ddlCommunity"); DropDownList ddlListings = (DropDownList)e.Row.FindControl("ddlListings"); // это мы биндим community BindCommunityList(ref ddlCommunity, inventories[e.Row.RowIndex].Id_community); // это мы биндим listings для данного community BindModelList(ref ddlListings, inventories[e.Row.RowIndex].Id_community, inventories[e.Row.RowIndex].Id_listing); // регистрируем client callback string ddlCommunityClientScript = this.ClientScript.GetCallbackEventReference(this, "'ddlCommunity' + ';" + e.Row.RowIndex.ToString() + "' + ';' + document.all['" + ddlCommunity.ClientID + "'].selectedIndex", "ddlCommunityCallback", "'CallbackContext'", "null", true); ddlCommunity.Attributes.Add("onchange", ddlCommunityClientScript); // эту кнопку вешаем как триггер для upGridListing, что будет обновлять ddlListings Button btnRefreshUpGridListing = (Button)e.Row.FindControl("btnRefreshUpGridListing"); Microsoft.Web.UI.ControlEventTrigger triggerbtnRefreshUpGridListing = new Microsoft.Web.UI.ControlEventTrigger(); triggerbtnRefreshUpGridListing.ControlID = btnRefreshUpGridListing.ClientID; triggerbtnRefreshUpGridListing.EventName = "Click"; Microsoft.Web.UI.UpdatePanel upGridListing = (Microsoft.Web.UI.UpdatePanel)e.Row.FindControl("upGridListing"); upGridListing.Triggers.Add(triggerbtnRefreshUpGridListing); } и public void RaiseCallbackEvent(string eventArgument) { string[] arr = eventArgument.Split(';'); switch(arr[0]) { case "ddlCommunity": int id_row = int.Parse(arr[1]); // id строки, которая редактируется int id_selected_index = int.Parse(arr[2]); // выбранный индекс ddlCommunity DropDownList ddlListings = (DropDownList)gv.Rows[id_row].FindControl("ddlListings"); // ищем наш ddlListings // перебиндиваем ddlListings для нового community BindModelList(ref ddlListings, ArmGAC.Community.AllCommunitiesWhatMustBeDisplayOnContactPage()[id_selected_index].Id, 0); break; } } как оно предполагается работать — когда строка в режиме редактирования и меняется значение ddlCommunity — инициируется обратный вызов, в аргумент которого заносится id строки и индекс выбранного нового community, после чего перебиндивается ddlListings (а это происходит, проверял в дебаггере) и по нажатию кнопки btnRefreshUpGridListing для данной строки обновляется upGridListing. Но почему-то при нажатии btnRefreshUpGridListing не меняется список ddlListings (показывается старый). Почему? спасибо... << RSDN@Home 1.1.4 stable SR1 rev. 568>> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 16:12 |
|
||
|
еще раз про AJAX
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, parapet, Вы писали: P>как оно предполагается работать — когда строка в режиме редактирования и меняется значение ddlCommunity — инициируется обратный вызов, в аргумент которого заносится id строки и индекс выбранного нового community, после чего перебиндивается ddlListings (а это происходит, проверял в дебаггере) и по нажатию кнопки btnRefreshUpGridListing для данной строки обновляется upGridListing. Но почему-то при нажатии btnRefreshUpGridListing не меняется список ddlListings (показывается старый). Почему? А ты попробуй, повесь обработчик на кнопку рефреш protected void Click_Refresh(object sender, EventArgs e) { Control c =((Control) sender).NamingContainer.FindControl("ddlListings"); } и посмотри на содержимое твоего дропдауна — она старое будет. твоя задача у меня решилась ( правда автоматическим рефрешем а не по кнопке ) с помощью установки первому дропдауну AutoPostBack=true и в его обработчике OnSelected indexChanged перебиндиванием второго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 23:37 |
|
||
|
еще раз про AJAX
|
|||
|---|---|---|---|
|
#18+
да, оказалось все гораздо проще. Большое спасибо :up:... << RSDN@Home 1.1.4 stable SR1 rev. 568>> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 12:49 |
|
||
|
еще раз про AJAX
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, parapet, Вы писали: P>да, оказалось все гораздо проще. Большое спасибо :up: плюс, еще можно использовать CascadingDropDown... << RSDN@Home 1.1.4 stable SR1 rev. 568>> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 14:04 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=34065214&tid=1388441]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 384ms |

| 0 / 0 |
