powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Кривой page'нг DataGrid'а при bind'инге в OnInit
11 сообщений из 11, страница 1 из 1
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33990414
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЭстЪ DataGrid в котором ЭстЪ control'ы. Соответственно, приходится его bind'ить в OnInit. Но из-за этого - слетает page'нг Ж8-/ Т.е. вперед еще типа корректно листается. А, вот назад...
Навал дрозофилку и увидел, что если bind'ить в OnLoad - то все сухо... Вот такая загогулина получается... И как теперь такую ситуацию разрулить?
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33990826
left_join
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и бинди на OnLoad, если там "все сухо" :)
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33990974
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блЫн... постил из Форум "DataGrid, DataList, Repeater" - там при'attach'ена дрозофила, а тут - ее не видать

left_join
ну и бинди на OnLoad, если там "все сухо" :)

Ex_Soft
DataGrid в котором ЭстЪ control'ы. Соответственно, приходится его bind'ить в OnInit

что бы из значения после OnInit нахлопнулись и их можно было заюзать в OnLoad
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
void Page_Init(Object sender, EventArgs e)
		{
			if((ds=(DataSet)Session[SessionId])==null)
			{
				ds=new DataSet();
				ds.Tables.Add("TableStatic");
				ds.Tables.Add("TableDynamic");
				ds.Tables["TableDynamic"].Columns.Add(CheckedFieldName,typeof(bool));
				Session[SessionId]=ds;

				OleDbConnection
					connection=new OleDbConnection(connstring);
      
				OleDbDataAdapter
					da=new OleDbDataAdapter("select * from books order by title, number",connection);
              
				da.Fill(ds.Tables["TableStatic"]);
				da.Fill(ds.Tables["TableDynamic"]);
				ds.Tables["TableDynamic"].PrimaryKey=new DataColumn[]{ds.Tables["TableDynamic"].Columns["Id"]};
			}

			MyDataGridInit.DataSource=ds.Tables["TableStatic"];
			MyDataGridInit.DataBind();

			MyDataGridDynamic.DataSource=ds.Tables["TableDynamic"];
			MyDataGridDynamic.DataBind();
		}

		void Page_Load(Object sender, EventArgs e)
		{
			MyDataGridLoad.DataSource=ds.Tables["TableStatic"];
			MyDataGridLoad.DataBind();
			
			if(IsPostBack)
			{
				CheckBox
					tmpCheckBox;

				int
					tmpInt;

				DataRow
					tmpDataRow;

				foreach(DataGridItem item in MyDataGridDynamic.Items)
				{
					if((tmpCheckBox=(item.FindControl(CheckBoxSignature) as CheckBox))==null)
						continue;

					if((tmpDataRow=ds.Tables["TableDynamic"].Rows.Find(tmpInt=Convert.ToInt32(MyDataGridDynamic.DataKeys[item.ItemIndex])))!=null)
					{
						if(tmpDataRow.IsNull(CheckedFieldName) || Convert.ToBoolean(tmpDataRow[CheckedFieldName])!=tmpCheckBox.Checked)
							tmpDataRow[CheckedFieldName]=tmpCheckBox.Checked;
					}
					else
						throw(new Exception("Unknown ID: '"+tmpInt+"'"));
				}
			}
		}

private void DataGrid_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
		{
			DataGrid
				tmpDataGrid;

			if((tmpDataGrid=source as DataGrid)==null)
				return;

			tmpDataGrid.CurrentPageIndex=e.NewPageIndex;
			tmpDataGrid.DataBind();
		}

		private void DataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
		{
			if(e.Item.ItemType!=ListItemType.Item
				&& e.Item.ItemType!=ListItemType.AlternatingItem)
				return;

			bool
				tmpBool = !(e.Item.DataItem as System.Data.DataRowView).Row.IsNull(CheckedFieldName) ? Convert.ToBoolean((e.Item.DataItem as System.Data.DataRowView).Row[CheckedFieldName]) : false;

			CheckBox
				tmpCheckBox;

			if((tmpCheckBox=e.Item.Cells[ 4 ].FindControl(CheckBoxSignature) as CheckBox)!=null
				&& tmpCheckBox.Checked!=tmpBool)
				tmpCheckBox.Checked=tmpBool;
		}
так понятнее?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33992898
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
после биндинга события срабатывать не будут.
Да и вообще зачем ты в Page_Init биндишь?

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33993732
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
left_join
ну и бинди на OnLoad

Dimon aka Manowar
Да и вообще зачем ты в Page_Init биндишь?

Так... ПрЫехали...
Неужели я так туманно/запутанно описываю проблему? Попробую Ышо раз.
ЭстЪ DataGrid с control'ом, 4 example, CheckBox.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<asp:DataGrid ID="MyDataGridDynamic" ... >
  <Columns>
    ...
    <asp:TemplateColumn>
      <ItemTemplate>
        <asp:CheckBox ID="tmpCheckBox" Runat="server" />
      </ItemTemplate>
    </asp:TemplateColumn>
    ...
  </Columns>
</asp:DataGrid>
Юзвер там check'ает, что ему нуна...
Покурив Understanding ASP.NET View State , только при bind'инге в OnInit'е можно добиться нахлопывания PostData на CheckBox'ы, чтобы потом можно было бы прочитать их значения в OnLoad'е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
void Page_Load(Object sender, EventArgs e)
{
...
if(IsPostBack)
{
foreach(DataGridItem item in MyDataGridDynamic.Items)
{
	if((tmpCheckBox=(item.FindControl(CheckBoxSignature) as CheckBox))==null)
		continue;

	if((tmpDataRow=ds.Tables["TableDynamic"].Rows.Find(tmpInt=Convert.ToInt32(MyDataGridDynamic.DataKeys[item.ItemIndex])))!=null)
	{
		if(tmpDataRow.IsNull(CheckedFieldName) || Convert.ToBoolean(tmpDataRow[CheckedFieldName])!=tmpCheckBox.Checked)
			tmpDataRow[CheckedFieldName]=tmpCheckBox.Checked;
	}
	else
		throw(new Exception("Unknown ID: '"+tmpInt+"'"));
}
}
...
}
Иначе, если bind'ить в OnLoad'е, в LoadPostbackData не нахлопываются данные о CheckBox'ах (их просто напросто еще не накого накатывать, поскольку они еще не созданы, ведь LoadPostbackData, согласно этому , вызывается ПЕРЕД OnLoad ). Если bind'ить в OnLoad - прийдется тогда самому разбирать Request.Form. А этого делать не хочеться
Или я что-то/где-то не так понял/упустил?

Вот я и пытаюсь выяснить: это - лечиться? Или - в морг? Если нЭт - то тогда, ессесно, прийдется самому руками разруливать


P.S. В дрозофиле четко видно, что если, 4 example, установить в "кривых" (1-м и 3-м) DataGrid'а 3-ю страницу и начать гулять по "правильному" (2-му), то у "неправильных" данные остаются 3-й страницы, а Pager устанавливается на 1-ю . Видать это, мо, в LoadViewState что-то ломается?

P.P.S.
Dimon aka Manowar
после биндинга события срабатывать не будут.

Какие имеются
в виду события? OnPageIndexChanged - срабатывает... Да и события control'ов, лежащих в DataGrid'е, как раз в таком варианте и срабатывают, 4 example, OnClick для Button'ов, OnCheckedChanged для CheckBox'ов...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33994162
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ниче не понимаю.
А почему нельзя биндить как обычно в Page_Load при !IsPostBack один раз, а потом все из вьюстейта ловить? У тя ж все статикой, как я понимаю, идет?

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33994282
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimon aka Manowar
а потом все из вьюстейта ловить

как? самому? руками?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33995229
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем самому? Грид при постбеке сам поднимется.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33995374
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimon aka Manowar
Грид при постбеке сам поднимется.

блЫн...
Димон, фиг с ним - с гридом-то... Мне нуна, что бы конторолы накатились. Ну вот, не поленись, скачай дрозофилку и перенеси bind'инг 3-го DataGrid'а из OnInit в OnLoad. Затем за'check'ай CheckBox и за'submit'ь форму и посмотри будет ли у тебя в OnLoad (при bind'инге в OnLoad) в
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
void Page_Load(Object sender, EventArgs e)
{
...
if(IsPostBack)
{
foreach(DataGridItem item in MyDataGridDynamic.Items)
{
	if((tmpCheckBox=(item.FindControl(CheckBoxSignature) as CheckBox))==null)
		continue;

	if((tmpDataRow=ds.Tables["TableDynamic"].Rows.Find(tmpInt=Convert.ToInt32(MyDataGridDynamic.DataKeys[item.ItemIndex])))!=null)
	{
		if(tmpDataRow.IsNull(CheckedFieldName) || Convert.ToBoolean(tmpDataRow[CheckedFieldName])!=tmpCheckBox.Checked)
			tmpDataRow[CheckedFieldName]=tmpCheckBox.Checked;
	}
	else
		throw(new Exception("Unknown ID: '"+tmpInt+"'"));
}
}
...
}
хотя бы один CheckBox за'check'аный... У меня - ни один.

P.S. FW 1.1 (мо из-за этого мы грим на разных языках
)

P.P.S. 2 Dimon aka Manowar
Если не в облом - глянь в личку, pls... Мо, все-таки, по аське прийдем к консенсусу/взаимопониманию и заборем сию фишку...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33995488
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мнэ... Вот где собака порылась...
А зачем тебе в Page_Load чекбоксы? Позже никак низзя по ним пробежаться? В обработчике Click какого-нить батона например или в PreRender?

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Кривой page'нг DataGrid'а при bind'инге в OnInit
    #33996145
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimon aka Manowar
Мнэ... Вот где собака порылась...

Yes
Yes
Yes
Наконец-то проблема понята - это уже пол-дела

Dimon aka Manowar
Позже никак низзя по ним пробежаться? В обработчике Click какого-нить батона

а толку? Bind'ить, то, все равно, нуна в OnInit , чтобы LoadPostBackDatat нахлопнула за'check'аность CheckBox'ов. А где уж это отлавливать - монопенисуально - ведь, согласно этому , RaisePostBackEvent идет в аккурат сразу после OnLoad .
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Кривой page'нг DataGrid'а при bind'инге в OnInit
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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