Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
1

Как получить доступ к содержимому ячеек в таблице на стороне сервера?

15.11.2010, 11:17. Показов 3646. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Таблица (HTML) построена так:
HTML5
1
2
3
4
5
6
<% For i = 0 to N %>
<TR>
  <TD><asp:TextBox id='txtMeavteah' runat='server' Width='42px'></asp:TextBox>
  </TD>
</TR>
<% Next %>
Как на стороне сервера прочесть значение из каждого TextBox-а? Как к каждому из них обратиться, если у всех ID одинаковый?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2010, 11:17
Ответы с готовыми решениями:

Как получить доступ к содержимому папок Outlook?
здравствуйте! с помощью ниже приведенной процедуры выводятся папки находящиеся в MS Outlook! Как...

innerHTML. Как же мне получить доступ к содержимому фрейма?
Народ, помогите плз!!! По ссылке http://exper.ural.ru/0075.phtml есть описание того, как...

Доступ к содержимому ячеек сводной таблицы
Доброго времени суток! Имеется сводная таблица. Каждому значению первой колонки соответствует одно...

Можно ли получить доступ к содержимому определенной ячейки стека по адресу?
Здравствуйте, скажите пожалуйста, могу вывести по определенному адресу из стека, при этом не теряя...

26
4256 / 2952 / 688
Регистрация: 08.06.2007
Сообщений: 9,860
Записей в блоге: 4
15.11.2010, 12:05 2
Попробуй обратиться к значению, как к массиву.
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
15.11.2010, 12:17  [ТС] 3
Вот так?
VB.NET
1
2
3
4
5
        Dim i As Integer
        Dim a As String
        For i = 0 To 3
            a = txtShomer(i).text
        Next
Не проходит!
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
15.11.2010, 12:20  [ТС] 4
И попытка формировать ID динамически - тоже не проходит.
<asp:textbox id='aaa<%=i%>'> - не получается.
0
0 / 0 / 2
Регистрация: 14.07.2010
Сообщений: 247
15.11.2010, 12:33 5
zachem tebe dinamicheski sozdavat tablicu esli est DataGrid, Repeater ???? a ??

esli raz ti tak reshil , ne stav webcontrol , postav obiknavenniy HTML , i dinamicheski generiruy ID ...

a potom cherez Request.Form['ID'] zaberay
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
15.11.2010, 12:37  [ТС] 6
Я бы с удовольствием!!! Только вот не знаю как в DataGrid сделать колонку из текстбоксов. Ну или в Repeater.
А если и сделать, то как потом считывать оттуда?

Помогите новичку.
0
0 / 0 / 2
Регистрация: 14.07.2010
Сообщений: 247
15.11.2010, 12:40 7
to chto ti napisal , budet rabotat bistrey chem datagrid .. no , nado pisat kraiviy kod .

seychas obisnu
0
0 / 0 / 2
Регистрация: 14.07.2010
Сообщений: 247
15.11.2010, 13:04 8
Stavim DATAGRID
XML
1
2
3
4
5
6
7
8
9
10
11
<asp:datagrid id='DataGrid1' style='Z-INDEX: 101; LEFT: 240px; POSITION: absolute; TOP: 128px'
                runat='server' AutoGenerateColumns='False'>
                <Columns>
                    <asp:TemplateColumn HeaderText='Name'>
                        <ItemTemplate>
                            <asp:TextBox runat='server' Text='<%# DataBinder.Eval(Container, 'DataItem.name') %>' ID='Textbox1'>
                            </asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateColumn>
                </Columns>
            </asp:datagrid>
teper sozdaem SOURCE dla datagrid , i delaem BIND
C#
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
        protected System.Web.UI.WebControls.DataGrid DataGrid1;
        protected System.Web.UI.WebControls.Button Button1;
        private DataTable dt=new DataTable();
    
        private void Page_Load(object sender, System.EventArgs e)
        {
            CreateColumns();
            AddRow('1');
            AddRow('2');
            AddRow('3');
            BindGrid();
        }
 
        private void BindGrid()
        {
            DataGrid1.DataSource=dt;
            DataGrid1.DataBind();
        }
 
        private void CreateColumns()
        {
            DataColumn newColumn=new DataColumn();              
            newColumn.ColumnName='name';
            newColumn.DataType=System.Type.GetType('System.String');                                                
            this.dt.Columns.Add(newColumn);         
        }
 
        private void AddRow(string name)
        {
            DataRow newRow;
            newRow=this.dt.NewRow();
            newRow['name']=name;                                    
            this.dt.Rows.Add(newRow);
        }
a pri najatia knopki delaem vot chto
C#
1
2
3
4
5
6
7
8
    private void Button1_Click(object sender, System.EventArgs e)
        {
            foreach(DataGridItem dg in DataGrid1.Items)
            {
                TextBox txtName=(TextBox)dg.FindControl('Textbox1');
                Response.Write(txtName.Text);
            }
        }
ponyatno ?
0
0 / 0 / 2
Регистрация: 14.07.2010
Сообщений: 247
15.11.2010, 14:43 9
poluchilas ?
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
15.11.2010, 15:00  [ТС] 10
Создал датагрид с текстбоксами.
Tеперь создаю датасет и привяжу его в DataSource.
Следующей задачей будет сохранить внесенные данные в БД. И проконтролировать как-то, чтобы в каждой колонке были Valid-ные значения. А дальше Insert, Delete, Cancel и т.д. Так что все постепенно.
Спасибо огромное за помошь. Я молиться за Вас должен.
0
0 / 0 / 2
Регистрация: 14.07.2010
Сообщений: 247
15.11.2010, 15:06 11
vsegda pojaluysta )

esho nujna budet pomosh , mojete obrashatsya :-))
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
15.11.2010, 17:09  [ТС] 12
Ну вот. Теперь уперся в DataAdapter.Update
Ну в смысле, как же теперь внесенные изменения в DataGrid засунуть в БД?
Уфффф!
0
0 / 0 / 2
Регистрация: 14.07.2010
Сообщений: 247
15.11.2010, 17:28 13
slushay , druzjishiy

nado vso zaranee planirovat :-))

u teba est dannie kotorie vvedeni s klienta , tak ? vot i delay svoi izminenia ;-)

nichego slojnogo net :-)
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
16.11.2010, 08:18  [ТС] 14
Это и планировалось.
Я делаю так:
VB.NET
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
   Public Function SaveDataSetToDB() As DataSet
 
        Dim oDServ As New DServ
        Dim NumRows As Integer
 
        Dim cmdUpd As New SqlCommand
 
        Dim daNispach = New SqlDataAdapter 
'получаю DataSet, которую нужно сохранить
 
       mDs = Current.Session('dsNispach') 
 'Надо бы проверять все колонки, но желательно 
 'это делать еще при вводе жанных в колонке
        'Call ValidateAllRows(dsHazmBitzua)
 
        cmdUpd.CommandType = CommandType.StoredProcedure
        cmdUpd.CommandText = 'spNispachHoursUpdate'
        cmdUpd.Connection = oDServ.GetConnection('d')
 
        Dim parmTemp As SqlParameter
 
        With cmdUpd.Parameters
 
            parmTemp = .Add('@idNispachHour', SqlDbType.Int)
            parmTemp.SourceColumn = 'idNispachHour'
            parmTemp.SourceVersion = DataRowVersion.Original
 
            parmTemp = .Add('@dateInMonth', SqlDbType.DateTime)
            parmTemp.SourceColumn = 'dateInMonth'
            parmTemp.SourceVersion = DataRowVersion.Current
            
            'И так далее...............
 
        End With
 
        Try
            If Not IsNothing(daNispach) Then
                daNispach.UpdateCommand = cmdUpd
                NumRows = daNispach.Update mDs, 'NispachHoursByCompany')
            End If
        Catch ex As Exception
            Current.Response.Write(vbCrLf & 'Ln ~265 BL ' & ex.Message)
        End Try
        daNispach = Nothing
 
        mDs.Clear()
        mDs = LoadDataSet() 'Перезагружаем из БД (с учетом изменений)
 
        Current.Session('dsNispach') = mDs
 
        oDServ = Nothing
        Return mDs ' Возвращаем в датагрид.
 
    End Function
Почему-то это не работает.
Помогите разобраться, где я ошибаюсь.
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
16.11.2010, 10:00  [ТС] 15
Доброе утро eLiko! (или другое время суток)

Вы мне вчера очень здорово помогли с выводом данных в грид (в текстбоксы). Это у меня получилось.
Теперь пользователь редактирует эти поля в гриде (в текстбоксах) и нажимает кнопку Save.
Я написал точно такую же функцию, как и для BoundColumns, где параметры для UpdateComand формируются вот так:

VB.NET
1
2
3
4
5
6
7
8
With cmdUpd.Parameters
 
parmTemp = .Add('@idNispachHour', SqlDbType.Int)
parmTemp.SourceColumn = 'idNispachHour'
parmTemp.SourceVersion = DataRowVersion.Original   (или Current)
 
…..
End With
Это не работает, хотя ошибок не выдается никаких.

Поэтому я сомневаюсь, что это правильно. Может быть в случае с TextBox-ами, встроенными в колонки это не так? Может параметры надо создавать как-то по другому?

Искренне Вам благодарен за Вашу помощь.
0
0 / 0 / 2
Регистрация: 14.07.2010
Сообщений: 247
16.11.2010, 10:36 16
DataAdapter.Update - eti shtuchki bolshe godyatsya v windows forms

a v web programirovanie , nemnoshko podrugomu nado podxadit k zadache.

nado kak mojna po menshe jrat resursi , i kak mojna po menshe obrashatsya k baze .

ya neznayu kakaya u vas tam zadachka , no ya v grid tekstboksi ne stavlu.

ya mesto tekstbox-ov stavlu Label-i . a riadom stavlu knopku 'Edit' .. pri najatia na knopku Edit , Label prevrashaetsya v TextBox . a Edit prevrashaetsya v Update i v Cancel (eto vstroennaya vozmojnost DataGrid-a) . potom pri najatia na knopku Update vizivaetsya funkcia i obnavlaetsya imenno tot ROW.

v vashel zadache mojna li podayti k zadache imenno tak ? ili vam neobxodima chto bili imenno TextBox-i ?
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
16.11.2010, 11:00  [ТС] 17
Задача такая:
Имеется заказ на охрану объектов. Там могут быть (специальности)охранники, патруль на машине, телохранители и т.д.
Итак вверху страницы есть данные от кого и на когда (с даты по дату) заказ.
А ниже в датагриде строки по каждой дате отдельно. В строке в колонках по каждой специальности надо проставить количество отработанных часов (по факту). Заказчик хочет, чтобы не нажимая никаких кнопок бухгалтер проставил в каждой колонке часы работы, затем нажал кнопку Save. Если результаты его не удовлетворяют - можно заново все отредактировать.
Если еще до того, как нажата кнопка Save он (бухгалтер) много работал но вдруг передумал вносить изменения, он может нажать кнопку Cancel и во всех строках и колонках возобновятся данные, которые были с момента последнего сохранения.
Желательно также иметь возможность удалить строку (по определенной дате) или добавить новую строку, если по факту была работа в дни не оговоренные в заказе (был перенос сроков).
--------------------
Иметь кнопку рядом с каждым текстбоксом - пользователю стремно нажимать все время. Он хочет работать без остановок, и лишь в конце нажать кнопку внизу страницы.
0
0 / 0 / 2
Регистрация: 14.07.2010
Сообщений: 247
16.11.2010, 11:51 18
a tak .

v vashe, sluche preizvoditelnost ne imeet bolshuyu rol .

tak tak programmoy malo kto odnovremenno budet polzivatsya .

tak dla togo chtobi dobavit novuyu Row kak vi skazali , nado postavit esho odnu knopku 'More Row'
XML
1
<asp:Button id='btnMoreRow' runat='server' Text='More Row'></asp:Button>
a dla togo chtobi eto knopka rabotala v click-e pishem vot chto
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        private void btnMoreRow_Click(object sender, System.EventArgs e)
        {
            MoreRow();
            BindGrid();
        }
 
        private void MoreRow()
        {
            CreateColumns();
            foreach(DataGridItem dgItem in DataGrid1.Items)
            {   
                TextBox txtName=(TextBox)dgItem.FindControl('TextBox1');                
                AddRow(txtName.Text);
            }           
            AddRow('');         
        }
a esho ne zabutte v Page load postavit IsPostBack
C#
1
2
3
4
5
6
7
8
9
10
11
    private void Page_Load(object sender, System.EventArgs e)
        {
            if(!Page.IsPostBack)
            {
                CreateColumns();
                AddRow('1');
                AddRow('2');
                AddRow('3');
                BindGrid();
            }
        }
kak ya ponyal , u vas est normalizovannaya tablica gde budet xranitsya znachenie tekstbox-ov , tak ? tak kak u nas est Knopka More Row (kstati , delete row sdelayte takje) mi neznaem skoka zapisev budet vvedeni v bazu dannix . po etomu , sdes metod update ne podaydet . nado udalit starie i vvesti novie . skajem u vas est klass TextBoxDb kotoriy upravlaet etimi zapisami , tak vot chto delaem , kogda najimaetsya knopka save
C#
1
2
3
4
5
6
7
8
9
10
        private void Button1_Click(object sender, System.EventArgs e)
        {
            TextBoxDb db=new TextBoxDb();
            db.DeleteAll();
            foreach(DataGridItem dg in DataGrid1.Items)
            {
                TextBox txtName=(TextBox)dg.FindControl('Textbox1');
                db.Add(txtName.Text.Replace(''',''''));
            }
        }
vot i vso a kogda gruzim eti dannie prostim sposobom berem dannie v DataTable , a potom

C#
1
2
3
4
foreach(DataRow dr in dt.Rows)
{
  AddRow(dr['znachenie'].ToString());
}
vot .. dumayu ponyatno . vam eto nado bilo sdelat ?
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 177
16.11.2010, 12:50  [ТС] 19
оставим в стороне Insert, и Delete

Если в Гриде есть BoundColumns:
добавляем Параметр в SQLCommand.UpdateComand и задаем:

parmTemp.SourceColumn = 'dateInMonth'
parmTemp.SourceVersion = DataRowVersion.Current

Эти две строчки кода
позволяют 'взять' значения из DataSet-a из определенной колонки и засунуть в параметр StoredProcedure.

Далее команда DataAdapter.Update(DataSet, Table) пробегает по всем строкам в DataSet и смотрит их статус. В зависимости от него запускается SQLCommand.UpdateComand или другая и исполняется сохраненная процедура. И так до конца строк в ДатаСете.
Но так как теперь у меня в Гриде нет BoundColumn, то это все не работает. решение где-то близко, вопрос в том - как получить автоматически параметры при 'пробеге по датасету'?
0
0 / 0 / 2
Регистрация: 14.07.2010
Сообщений: 247
16.11.2010, 13:14 20
vi skazali chto, Желательно также иметь возможность удалить строку (по определенной дате) или добавить новую строку

tak znachet , skajem v baze est 3 zapisa .

delaem More Row i dobavlaem v grid esho odin Row .

poluchaetsya chto v DataSet-e 3 zapisa v Gride-4 .

kak togda DataAdapter.Update(DataSet, Table) budet rabotat ?

ya neznayu . ya ne kogda ne polzivalsya metodom Update klassa DataAdapter.

mnogie razrabotchiki reshayut etu problemu imenno tak kak ya opisal naverxu
0
16.11.2010, 13:14
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2010, 13:14
Помогаю со студенческими работами здесь

Как получить доступ к таблице в .mdb-файле
Не получается изменить данные в таблице Access, получается только извлечение данных. Подскажите,...

Как получить доступ к удаленному рабочему столу сервера?
Windows 7 находится в домене, WIN Server 2008 не находится в домене. С Win7 не могу получить доступ...

Как можно получить доступ к отдельной таблице на страничке сайта
Есть страничка сайта...

Как доступ из внешней сети получить для локального сервера?
Доброго времени суток уважаемые программисты! Столкнулся с такой задачей, как получить доступ к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Что такое хорошо и что такое плохо, вид сбоку. Индивид и общество - грань не нарушения.
Hrethgir 18.01.2025
В моей личной жизни и времени, я рассуждаю категорией "хуже-лучше", в том плане, когда меня спросили например - "а зачем ты делаешь свой процессор?", то я ответил - "чтобы сделать свою жизнь лучше". . .
Передача по ссылке или по значению в Java?
InfoMaster 18.01.2025
В мире программирования на Java одним из ключевых аспектов, требующих глубокого понимания, является механизм передачи параметров в методы. Этот фундаментальный концепт часто становится источником. . .
Тернарный условный оператор в Python
InfoMaster 18.01.2025
В мире программирования существует множество инструментов и конструкций, позволяющих создавать эффективный и лаконичный код. Одним из таких инструментов является тернарный условный оператор, который. . .
Как удалить неотслеживаемые файлы из рабочего дерева Git
InfoMaster 18.01.2025
В процессе разработки программного обеспечения с использованием системы контроля версий Git часто возникает необходимость в управлении неотслеживаемыми файлами. Неотслеживаемые файлы (untracked. . .
Что делает код if __name__ == "__main__": в Python
InfoMaster 18.01.2025
В мире программирования на Python существует множество важных концепций, и одной из наиболее интересных является конструкция if __name__ == "__main__". Эта специальная конструкция играет ключевую. . .
Как заставить Git забыть об отслеживаемом файле, добавленном в .gitignore
InfoMaster 18.01.2025
В мире разработки программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, позволяя эффективно отслеживать изменения в коде и управлять ими. Однако. . .
Что означает use strict в JavaScript и для чего используется
InfoMaster 18.01.2025
В мире современной веб-разработки JavaScript играет ключевую роль как один из основных языков программирования. По мере его эволюции возникла необходимость в механизмах, которые помогли бы. . .
Как работать со скрытыми (hidden) элементами в jQuery
InfoMaster 18.01.2025
В современной веб-разработке управление видимостью элементов на странице является одним из ключевых аспектов создания интерактивных пользовательских интерфейсов. jQuery предоставляет мощный набор. . .
Как переключаться между ветками (Branch) с помощью checkout в Git
InfoMaster 18.01.2025
Ветки в Git являются одной из ключевых концепций для управления версионностью кода, позволяя разработчикам эффективно работать в команде и параллельно развивать программные проекты. Каждый новый. . .
Что такое стек и куча, чем они отличаются и где находятся
InfoMaster 18.01.2025
Понимание основных концепций памяти в программировании В мире современного программирования эффективное управление памятью играет ключевую роль в создании производительных и надежных приложений. . . .
Как использовать комментарии в JSON
InfoMaster 18.01.2025
JSON (JavaScript Object Notation) представляет собой легкий и широко используемый формат обмена данными, который стал стандартом де-факто для веб-приложений и программных интерфейсов. При работе с. . .
Как заставить git pull перезаписать локальные файлы в Git
InfoMaster 18.01.2025
Проблема перезаписи локальных файлов в Git При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо синхронизировать локальный репозиторий с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru