Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / GridView и темплейты + их заполнение / 12 сообщений из 12, страница 1 из 1
20.11.2006, 18:18
    #34141862
Gosend
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
Привет.
Ситуация такая: есть GridView и ItemTemplate такого вида:                        <ItemTemplate>
                            <%#GetPriorityTextByID((int)Eval("Priority"))%>
                        </ItemTemplate>
Т.е. фактически таблица, с которой берутся значения для GridView содержит в себе ID нужных слов. Потом функции типа GetPriorityTextByID по этому ID делают запрос к базе и вырывают сам текст, уже с другой таблицы и это подставляется в саму ячейку (уже текст, а не его ID) - в общем классический вариант.

Проблема в том, что есть у меня EditTemplate такой:
                        <EditItemTemplate>
                            <asp:DropDownList  ID="PriorityList2" runat="server" DataSourceID="DATA_PROIRITYLIST"
                                DataTextField="Priorities" DataValueField="ID">
                            </asp:DropDownList>
                        </EditItemTemplate>
Он выводит DropDownList, из которого можно выбрать уже новое значение поля. Все работает - выпадающий список отображается, но проблема в том, что я никак не могу установить выделеное значени этого списка. Т.е. выделить нужно текущее значение поля, а я не могу.

Пытался несколько вариантов обработать:
1. На событие DropDownList  - OnDataBound сделать что-то в виде этого:
int ridx = GridView1.EditIndex-1;
DropDownList ddl = sender as DropDownList;
ddl.SelectedItem.Text = GridView1.Rows[ridx].Cells[0].Text;

но проблема возникает в GridView1.Rows[ridx].Cells[0].Text - он всегда "", видимо на этом этапе GridView ещё или уже не содержит в своих ячейках данных.

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

Ребята, посоветуйте пожалуйста, как справиться с такой задачей без особых издевательств?

СпасибоThink of an idea to change our world - and put it into action.
...
Рейтинг: 0 / 0
20.11.2006, 20:27
    #34142081
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
Это нужно делать в GridView.RowDataBound

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
21.11.2006, 15:19
    #34144040
Gosend
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
Нет, к сожалению даже в RowDataBound e.Row.Cells[0/...] тоже пусты.. (Think of an idea to change our world - and put it into action.
...
Рейтинг: 0 / 0
21.11.2006, 18:59
    #34144938
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
зато там есть e.Row.DataItem, откуда ты можешь взять необходимые тебе значения.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
22.11.2006, 13:02
    #34146501
Gosend
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
правла в том, что и e.Row.DataItem пуст (((

ещё идеи?Think of an idea to change our world - and put it into action.
...
Рейтинг: 0 / 0
22.11.2006, 14:32
    #34146907
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
В RowDataBound? Быть того не может


Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
22.11.2006, 18:52
    #34148101
Gosend
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
точно говорю! Почемуто значение "".

Может код сюда винуть?Think of an idea to change our world - and put it into action.
...
Рейтинг: 0 / 0
22.11.2006, 20:31
    #34148293
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
Давай.
И что биндится тоже покажи.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
23.11.2006, 13:39
    #34150094
Gosend
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
В таком духе:<asp:GridView ID="GridView1" runat="server" CellPadding="4" DataKeyNames="ID" DataSourceID="DATA_MAIN"
ForeColor="#333333" AutoGenerateColumns="False"
OnRowDeleting="GridView1_RowDeleting1" OnRowUpdating="GridView1_RowUpdating1" AllowSorting="True" OnRowEditing="GridView1_RowEditing" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:TemplateField HeaderText="Priority" SortExpression="Priority">
<ItemTemplate>
<%#GetPriorityTextByID((int)Eval("Priority"))%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList OnDataBound="FillPriorityControl" ID="PriorityList2" runat="server" DataSourceID="DATA_PROIRITYLIST"
DataTextField="Priorities" DataValueField="ID">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>


В реализации:
protected string GetPriorityTextByID(int PriorityID)
{
try
{
//return Text of Priority
string defaultCmd = DATA_PROIRITYLIST.SelectCommand;
DATA_PROIRITYLIST.SelectCommand = "SELECT [Priorities], [ID] FROM [_PriorityList] WHERE [ID] = @KeyID";
DATA_PROIRITYLIST.SelectParameters["KeyID"].DefaultValue = PriorityID.ToString();
DataView dv = (DataView)DATA_PROIRITYLIST.Select(DataSourceSelectArguments.Empty);
DATA_PROIRITYLIST.SelectCommand = defaultCmd;
return (string)dv[0][0];
}
catch (Exception)
{
SetMessage("Some Error occurs during DataBase request with: PriorityID = '" + PriorityID.ToString() + "'");
}
return "";
}

protected void FillPriorityControl(object sender, EventArgs e)
{
int ridx = GridView1.EditIndex - 1;
// записать в поля редактирования данные от редактируемой записи
DropDownList ddl = sender as DropDownList;
ddl.SelectedItem.Text = PriorityText; // GridView1.Rows[ridx].Cells[0].ToString();
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
PriorityText = e.Row.DataItem.ToString();
!!! тут всегда ""
}

Think of an idea to change our world - and put it into action.
...
Рейтинг: 0 / 0
23.11.2006, 19:48
    #34151589
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
Не забывай делать проверку - if(e.Row.RowType == DataControlRowType.DataRow)

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
25.11.2006, 16:13
    #34155379
Gosend
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
На самом деле тотпример, что я привел выше - он нерабочий.
Правильно вот такое написать в RowDataBound:

                if(e.Row.DataItem != null)
                    ((DropDownList)(e.Row.Cells[0].FindControl("PriorityList2"))).SelectedValue = ((DataRowView)e.Row.DataItem)["Priority"].ToString();

не знаю почему, но если вместо названия колонки "Priority" писать её индекс (0 у меня), то значение какое-то другое. Они что, не по порядку там?Think of an idea to change our world - and put it into action.
...
Рейтинг: 0 / 0
25.11.2006, 20:45
    #34155565
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView и темплейты + их заполнение
Что значит "не по порядку"? Как в DataTable данные легли - так они и в DataView уходят

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / GridView и темплейты + их заполнение / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]