Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataGrid разные варианты реализации / 12 сообщений из 12, страница 1 из 1
12.11.2003, 08:50
    #32320954
XGuest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
Кто-нибудь сталкивался со следующей проблемой.
Есть две 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
12.11.2003, 12:15
    #32321260
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
при Update вызов MyGrid.DataBind(); тоже необходим
...
Рейтинг: 0 / 0
12.11.2003, 12:40
    #32321306
XGuest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
2 monstrU
Необходим до получения значений из грида? Так он же зальет его исходными данными и новых значений я не получу ?
И почему точно такая же конструкция в монолитной странице работает и без DataBind()?
...
Рейтинг: 0 / 0
12.11.2003, 13:32
    #32321406
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
нужно делать самым последним оператором.
только вот в втоей процедуре 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
12.11.2003, 14:11
    #32321492
XGuest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
Да суть дела-то не в том что я потом обновляю, просто согласитесь что в текстбоксы должны прийти НОВЫЕ значения, ведь я ему присваиваю Controls[1] - то есть редактируемые данные, а он мне вохвращает исходные (при DataBind() значение - xxx, я изменяю на xxx____, а он мне возвращает xxx хотя должен xxx______) и поэтому я не могу записать данные поскольку он мне возвращает СТАРЫЕ данные...
...
Рейтинг: 0 / 0
13.11.2003, 06:29
    #32322316
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
нет. если вы все правильно делате, то должны новые возращаться.
например, скажите , в codebehind у вас в
protected void MyGrid_UpdateCommand(object sender; DataGridCommandsEventsArgs e) стоит handles для Update ?

я просто сам так оченб часто делаю, как вы описываете, и все работает.
может валидатор какой мешает ?
...
Рейтинг: 0 / 0
13.11.2003, 09:25
    #32322416
XGuest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
Если вы имеете ввиду InitializeComponent, то там это событие добавляется. И он же присваевает значение текстбоксам - значит отрабатывает (только не так как ожилается).
Или вы о чем то другом? Тогда поясните пожалуйста...
...
Рейтинг: 0 / 0
13.11.2003, 10:30
    #32322505
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
вообще то правильно все - я по мотивам vb.net говорил. а в c# правильно должно быть
...
Рейтинг: 0 / 0
14.11.2003, 08:24
    #32323876
XGuest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
Что кроме монстра спецов нет? Есть соображения?
Вчера до предела все упростил и ниже привожу исходники. Кому не сложно попробуйте может у меня 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
17.11.2003, 08:44
    #32325809
XGuest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
ОДНАКО...
...
Рейтинг: 0 / 0
17.11.2003, 12:14
    #32326042
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
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
18.11.2003, 09:03
    #32326994
XGuest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid разные варианты реализации
Попробовал. Тот же результат. Хотя я не понимаю как FillGrid() может повлиять на вышестоящий оператор.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataGrid разные варианты реализации / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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