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

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

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

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

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

Но почему не получается редактирования на месте при привязке на свой бизнес обьект? Я убил на эти эксперименты все воскресенье, но так и не нашел ни одного примера редактировавния бизнес-обьекта...
...
Рейтинг: 0 / 0
20.08.2006, 19:05
    #33930899
C...R...a...S...H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование в GridView
http://www.aspnetmania.com/Articles/Article.aspx?ID=25
Не катит?----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
21.08.2006, 17:55
    #33933007
vbnet2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование в GridView
up
...
Рейтинг: 0 / 0
21.08.2006, 18:24
    #33933070
Dade
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование в GridView
Я работал с DataGrid.
В DataSource к нему поступала моя собственная коллекция. Никаких проблем с редактированием:)
Может посмтрите в сторону DataGrid.
Крэш, очень хорошую статью порекомендовал по этому поводу.
...
Рейтинг: 0 / 0
21.08.2006, 23:10
    #33933380
vbnet2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование в GridView
Статья неплохая. Но вот тест на редактирование в 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
21.08.2006, 23:48
    #33933403
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование в GridView
тынц - а если почитать два последних линка ;)
...
Рейтинг: 0 / 0
22.08.2006, 09:44
    #33933668
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование в GridView
вот чего не хватает
Код: 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
22.08.2006, 11:16
    #33933965
vbnet2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование в GridView
Спасибо всем, кто помогал. Ну наконец-то я умею редактировать бизнес обькты, а не только Датасеты. Строчки которой не хватало:
Код: plaintext
GridView1.EditIndex = e.NewEditIndex
...
Рейтинг: 0 / 0
22.08.2006, 16:38
    #33935407
vbnet2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование в GridView
Вообще, если кому интересно, выложу полный тест редактирования.

Определение класса выше, а страничка:
Код: 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
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Редактирование в GridView / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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