2010-01-08 4 views
1

Каков наилучший способ для создания элемента управления, который будет работать как таблица Access в ASP.NET?Управление сеткой таблицы для ASP.NET

То есть, я определяю, скажем, 3 колонки. Пользователь может добавлять/редактировать/удалять строки. Это может быть одна строка за раз, это нормально. Существуют и другие поля в форме, не связанные с этой таблицей. Когда пользователь делает добавление строк информации, они нажимают «submit», а в точке точка - это когда я извлекаю все данные из элемента управления и сохраняю в базу данных (или файл xml или что-то еще).

Я попытался создать что-то с помощью ListView и/или GridView, и я просто не могу получить поведение, которое я хочу. Любые идеи или примеры?

+3

Какое конкретное поведение вы не можете реализовать с помощью ListView/GridView? –

ответ

2

Возможно, вы захотите изучить jQuery's jqGrid.

Demo here. То, что я вижу в терминах манипуляции сетью, связано с редактированием строк, но не слишком уверенно в столбцах.

Род занятий SO Posts here.

1

на ссылку, которая может быть полезна:

Using the New ListView Control in ASP.NET 3.5
Eksample из собственного проекта:

   <asp:ListView ID="lvList" runat="server" OnLayoutCreated="lvList_LayoutCreated" OnItemDataBound="lvList_OnItemDataBound"> 
        <LayoutTemplate> 
         <table id="tblTest" class="lvtest" cellpadding="0" cellspacing="0"> 
          <tr> 
           <th class="listheader"> 
            <asp:Label ID="lbl1" runat="server" /> 
           </th> 
           <th class="listheader"> 
            <asp:Label ID="lbl2" runat="server" /> 
           </th> 
          </tr> 
          <tr runat="server" id="itemPlaceholder" /> 
         </table> 
        </LayoutTemplate> 
        <EmptyDataTemplate> 
         <tr> 
          <td colspan="2"> 
           <asp:Label ID="lblNotFound" runat="server" OnInit="lblOnInit" /> 
          </td> 
         </tr> 
        </EmptyDataTemplate> 
        <ItemTemplate> 
         <tr class="<%# Container.DataItemIndex % 2 == 0 ? "odd" : "even" %>"> 
          <td class="listcell"> 
           <asp:Literal ID="lit1" runat="server" /> 
          </td> 
          <td class="listcell"> 
           <asp:Literal ID="lit1" runat="server" /> 
          </td> 
         </tr> 
        </ItemTemplate> 
       </asp:ListView> 

обработчики событий:

protected void lvRist_LayoutCreated(object sender, EventArgs e) 
    { 
     SetHeaderValues(); 
    } 


    //For the label when empty text 
     protected void lblOnInit(object sender, EventArgs e) 
    { 
     SetEmptyText(sender); 
    } 



    protected void lvList_OnItemDataBound(object sender, ListViewItemEventArgs e) 
    { 
     if (e.Item.ItemType != ListViewItemType.DataItem) return; 

     SetDataItem(e); 
    } 
+0

Я пытался это сделать, но с ObjectDataSource, обернутым вокруг ViewState. У меня нет базы данных SQL для сохранения, и я бы не хотел сохранять ее до тех пор, пока пользователь не отправит 'submit' в любом случае. –

+0

Вы могли бы привязать данные к коду по сравнению с коллекцией –

Смежные вопросы