powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataGrid разные варианты реализации
12 сообщений из 12, страница 1 из 1
DataGrid разные варианты реализации
    #32320954
XGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь сталкивался со следующей проблемой.
Есть две asp.net-страницы на которых расположено по DataGrid (гриды одинаковые, данные берутся с одной базы с одной таблицы).
Разница между страницами в том, что одна написана с и использованием разделения кода, другая нет (то есть все процедуры внутри <script></script>)
Реализованы следующие методы

protected void MyGrid_EditCommand(object sender; DataGridCommandsEventsArgs e)
{
MyGrid.EditItemIndex = e.Items.ItemIndex;
MyGrid.DataBind();
}

protected void MyGrid_CancelCommand(object sender; DataGridCommandsEventsArgs e)
{
MyGrid.EditItemIndex = -1;
MyGrid.DataBind();
}

protected void MyGrid_UpdateCommand(object sender; DataGridCommandsEventsArgs e)
{
TextBox1.text = ((TextBox)e.Items.Cells[0].Controls[1]).Text //это один и
TextBox2.text = ((TextBox)e.Items.FindControls("edit_name")).Text //тот же элемент
}

Так вот страница без разделения кода в текстбоксы записывает измененные данные,
а страница с разделением кода данные полученные из DataSet.

ПОЧЕМУ???
Очень хотелось бы, чтобы и страница с разделением кода вела себя правильно...
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32321260
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при Update вызов MyGrid.DataBind(); тоже необходим
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32321306
XGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 monstrU
Необходим до получения значений из грида? Так он же зальет его исходными данными и новых значений я не получу ?
И почему точно такая же конструкция в монолитной странице работает и без DataBind()?
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32321406
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно делать самым последним оператором.
только вот в втоей процедуре Update где эти самые даные меняются? вообще то говоря нужно получить новые введенные данные
TextBox1.text = ((TextBox)e.Items.Cells[0].Controls[1]).Text //это один и
TextBox2.text = ((TextBox)e.Items.FindControls("edit_name")).
и потом sql запросом их в базу внести.
и послдедним оператором bind сделать.

а насчет того что что то работает в codeinline странице - не должно быть разницы. просто непонятно что ты там обновляешь.

ведь отклик на событие Update - это просто отклик на нажате кнопки, поэтому нужно принудительно обновлять источник данных для datagrid
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32321492
XGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да суть дела-то не в том что я потом обновляю, просто согласитесь что в текстбоксы должны прийти НОВЫЕ значения, ведь я ему присваиваю Controls[1] - то есть редактируемые данные, а он мне вохвращает исходные (при DataBind() значение - xxx, я изменяю на xxx____, а он мне возвращает xxx хотя должен xxx______) и поэтому я не могу записать данные поскольку он мне возвращает СТАРЫЕ данные...
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32322316
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет. если вы все правильно делате, то должны новые возращаться.
например, скажите , в codebehind у вас в
protected void MyGrid_UpdateCommand(object sender; DataGridCommandsEventsArgs e) стоит handles для Update ?

я просто сам так оченб часто делаю, как вы описываете, и все работает.
может валидатор какой мешает ?
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32322416
XGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы имеете ввиду InitializeComponent, то там это событие добавляется. И он же присваевает значение текстбоксам - значит отрабатывает (только не так как ожилается).
Или вы о чем то другом? Тогда поясните пожалуйста...
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32322505
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще то правильно все - я по мотивам vb.net говорил. а в c# правильно должно быть
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32323876
XGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что кроме монстра спецов нет? Есть соображения?
Вчера до предела все упростил и ниже привожу исходники. Кому не сложно попробуйте может у меня VS глючит...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<%@ Page language= "c#"  Codebehind= "main.aspx.cs"  AutoEventWireup= "false"  Inherits= "root.Main"  %>
<HTML>
		<body>
			<form id= "Form1"  runat= "server" >
				<asp:DataGrid id= "DataGrid1"  runat= "server"  AutoGenerateColumns= "False"  Width= "146px" >
					<Columns>
						<asp:BoundColumn DataField= "name"  SortExpression= "name"  HeaderText= "наименование" ></asp:BoundColumn>
						<asp:EditCommandColumn ButtonType= "LinkButton"  UpdateText= "Update"  CancelText= "Cancel"  EditText= "Edit" ></asp:EditCommandColumn>
					</Columns>
				</asp:DataGrid>
				<asp:TextBox id= "TextBox1"  runat= "server"  Width= "200px" ></asp:TextBox>
			</form>
		</body>
</HTML>


Код: 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.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace root
{
	public class Main : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.TextBox TextBox1;
		protected System.Web.UI.WebControls.DataGrid DataGrid1;

		public void FillGrid()
		{
			SqlConnection myConnection = new SqlConnection( "server=.;database=pubs;user id=sa;password=xxx" );

			SqlDataAdapter myCommand = new SqlDataAdapter( "SELECT TOP 10  [au_lname] as [name] FROM [authors]", myConnection);

			DataSet ds = new DataSet();
			myCommand.Fill(ds,  "authors" );

			DataGrid1.DataSource=ds.Tables[ "authors" ].DefaultView;
			DataGrid1.DataBind();
		}

		private void Page_Load(object sender, System.EventArgs e)
		{
			FillGrid();
		}

		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			InitializeComponent();
			base.OnInit(e);
		}
		
		private void InitializeComponent()
		{    
			this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
			this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
			this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{
			DataGrid1.EditItemIndex = e.Item.ItemIndex;
			FillGrid();
		}

		private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{
			TextBox1.Text = ((TextBox)e.Item.Cells[ 0 ].Controls[ 0 ]).Text;
		}

		private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{
			DataGrid1.EditItemIndex = - 1 ;
			FillGrid();
		}

	}
}


P.S. незабудьте исправить <%@ Page language="c#" Codebehind="main.aspx.cs" AutoEventWireup="false" Inherits="root.Main" %>
и логин и пароль к серверу
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32325809
XGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОДНАКО...
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32326042
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)

{

TextBox1.Text = ((TextBox)e.Item.Cells[0].Controls[0]).Text;
FillGrid();
}

должно быть
...
Рейтинг: 0 / 0
DataGrid разные варианты реализации
    #32326994
XGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал. Тот же результат. Хотя я не понимаю как FillGrid() может повлиять на вышестоящий оператор.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataGrid разные варианты реализации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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