powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Редактирование в GridView
11 сообщений из 11, страница 1 из 1
Редактирование в GridView
    #33930723
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда GridView привязана на DataSet - то никаких проблем с редактированием данных на месте нет.
Но вот сейчас у меня GridView привязана не на DataSet, а на собственную коллекцию.

Проблем с отображением нет, но не могу добиться редактирования данных.

События редактирования (GridView_RowCommand и так далее) возникают, НО...
сетка не заменяет нужное поле InputBox'ом и не добавляет Update/Cancel - кнопки.
Надо что-то делать самому в GridView_RowCommand?

Может пример есть у кого-нидь с редактированием данных, когда GridView привязана на коллекцию, а не на DataSet?
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33930735
C...R...a...S...H
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать Template Column----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33930895
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял этой мысли.
Я так понимаю, что оно вообще не переходит в режим редактирования и склонясь к мысли, что GridView анализирует через рефлекшен сам бизнес обьект, и если в нет нет свойства SelectMetod - то GridView НИКОГДА и не откроется в режиме редактирования.... Что-то в таком направлении думаю...
А насчет TemplateColumn - не понял, как это тут применить. Я TemplateColumn вообще никогда не пользуюсь...

Вот на рисунке в верхней части - мой бизнес обьект. А чуть пониже - я настроил в дизайн-тайме сетку для отображения этого бизнес-обьекта.
Если вместо моего собственного бизнес-обьекта вставить просто DataSet (и привязать его не через DataSourse, а Через DataSourceID - редактирование на месте происходит без проблем. Ну собственно, это простейшая классическая схема применения GridView. Как и просто отображение бизнес-обьекта (без редактирования) - это тоже простейший режим работы GridView.

Но почему не получается редактирования на месте при привязке на свой бизнес обьект? Я убил на эти эксперименты все воскресенье, но так и не нашел ни одного примера редактировавния бизнес-обьекта...
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33930899
C...R...a...S...H
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.aspnetmania.com/Articles/Article.aspx?ID=25
Не катит?----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33933007
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33933070
Dade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я работал с DataGrid.
В DataSource к нему поступала моя собственная коллекция. Никаких проблем с редактированием:)
Может посмтрите в сторону DataGrid.
Крэш, очень хорошую статью порекомендовал по этому поводу.
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33933380
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Статья неплохая. Но вот тест на редактирование в GridView.

Состоит из файла класса MyClass.vb:
Код: 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.
Imports Microsoft.VisualBasic

Public Class TestColl
    Inherits System.Collections.Generic.List(Of One)
End Class

Public Class One
    Dim X As Integer, Y As String
    Public Property Key() As Integer
        Get
            Key = X
        End Get
        Set(ByVal value As Integer)
            X = value
        End Set
    End Property
    Public Property Name() As String
        Get
            Name = Y
        End Get
        Set(ByVal value As String)
            Y = value
        End Set
    End Property
End Class
и собственно странички Default.aspx:
Код: 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.
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    
    Dim MyColl As New TestColl
    
    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim y As New One
        y.Key =  1 
        y.Name = "Один"
        MyColl.Add(y)
    End Sub
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If Not IsPostBack Then
            GridView1.DataSource = MyColl
            GridView1.DataBind()
        End If
    End Sub

    Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs)

    End Sub


</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" OnRowEditing="GridView1_RowEditing" AutoGenerateColumns="False" DataKeyNames="Key">
         <Columns>
            <asp:BoundField DataField="Key" HeaderText="Key" ReadOnly="True" />
            <asp:BoundField DataField="Name" HeaderText="Name" />
            <asp:CommandField ButtonType="Button" ShowEditButton="True" />
        </Columns>
        </asp:GridView>
    
    </div>
    </form>
</body>
</html>
Чего же в этом коде не хватает для выхода в режим редактирования? А если подставить сюда просто Датасет - ведь все работает!
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33933403
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тынц - а если почитать два последних линка ;)
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33933668
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот чего не хватает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 Private Sub dgAnkets_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgAnkets.EditCommand
        ' редактирование данных в DataGrid
        dgAnkets.EditItemIndex = e.Item.ItemIndex
        Bind()
    End Sub

    Private Sub dgAnkets_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgAnkets.CancelCommand
        dgAnkets.EditItemIndex = - 1 
        Bind()
    End Sub
ну и 
 Private Sub dgAnkets_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgAnkets.UpdateCommand
        Dim TargetComboBox As DropDownList = CType(e.Item.FindControl("cmbStatus"), DropDownList)
        Dim ViewCount As Int32 = Int32.Parse(CType(e.Item.FindControl("txtViewCount"), TextBox).Text)
        Dim RowUID As String = CType(e.Item.Cells( 0 ).Text, String)
        Dim strSQL As String

.....
        dgAnkets.EditItemIndex = - 1 
        Call Bind()
    End Sub
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33933965
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем, кто помогал. Ну наконец-то я умею редактировать бизнес обькты, а не только Датасеты. Строчки которой не хватало:
Код: plaintext
GridView1.EditIndex = e.NewEditIndex
...
Рейтинг: 0 / 0
Редактирование в GridView
    #33935407
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, если кому интересно, выложу полный тест редактирования.

Определение класса выше, а страничка:
Код: 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.
<%@ Page Language="VB"  EnableEventValidation="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  
    Public MyColl As TestColl
    
    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
        If Session("MyColl") Is Nothing Then
            MyColl = Session("MyColl")
            MyColl = New TestColl
            Dim y As New One
            y.Key =  1 
            y.Name = "Один"
            MyColl.Add(y)
        End If
    End Sub
    
    Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs)
        GridView1.EditIndex = e.NewEditIndex
        GridView1.DataSource = MyColl
        GridView1.DataBind()
        Session("Editmode") = True
    End Sub

    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs)
        MyColl(GridView1.EditIndex).Name = CType(GridView1.Rows(GridView1.EditIndex).Cells( 1 ).Controls( 1 ), TextBox).Text
        GridView1.EditIndex = - 1 
        Session("Editmode") = False
    End Sub

    Protected Sub GridView1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
        GridView1.DataSource = MyColl
        GridView1.DataBind()
    End Sub


    

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView  ID="GridView1" runat="server" OnRowEditing="GridView1_RowEditing" DataKeyNames="Key" OnRowUpdating="GridView1_RowUpdating" AutoGenerateColumns="False" OnPreRender="GridView1_PreRender">
         <Columns>
            <asp:BoundField DataField="Key" HeaderText="Key" ReadOnly="True" />
             <asp:TemplateField HeaderText="Name">
                 <EditItemTemplate>
                     <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Name") %>' ></asp:TextBox>
                     <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
                         ErrorMessage="*"></asp:RequiredFieldValidator>
                 </EditItemTemplate>
                 <ItemTemplate>
                     <asp:Label ID="Label1" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
                 </ItemTemplate>
             </asp:TemplateField>
            <asp:CommandField ButtonType="Button" ShowEditButton="True" ShowCancelButton="False" />
        </Columns>
        </asp:GridView>
    
    </div>
    </form>
</body>
</html>
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Редактирование в GridView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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