Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Сложные таблицы или табличная форма


Автор: ANDeath 21.1.2008, 14:26
Добрый день.
Мне надо организовать форму на asp.net для работы с БД Access. И хотелось что бы это все выглядело максимально дружелюбно.
Возможно ли в элементе GridView использование DropDownList для редактирования записи?
Или же возможно ли вывести в FormView элементы таблицей, поаналогии в Access "табличной формой"?

Автор: Mymik 21.1.2008, 16:30
я не очень знаком с "табличной формой" в Access, но как я понял, это подобие foreing key constraint в MS SQL. Использовать DropDownList в GridView конечно же можно и задавать ему DataSource (DataSourceID) тоже можно. Следовательно когда вы поподаете в EditMode то вам просто нужно будет заполнить свой DropDownList по любой понравившейся вам схеме.

Автор: ANDeath 21.1.2008, 17:52
А можно пример связки DropDownGrid и DridView? F то на словах это все как-то пространственно звучит.
Я так понимаю надо в тег Columns просто добавить ниспадающий список...ну и связать через DataSourceID и SelectedIndex?

Автор: Mymik 21.1.2008, 20:31
Цитата(ANDeath @  21.1.2008,  17:52 Найти цитируемый пост)
А можно пример связки DropDownGrid и DridView? F то на словах это все как-то пространственно звучит.
Я так понимаю надо в тег Columns просто добавить ниспадающий список...ну и связать через DataSourceID и SelectedIndex? 

Ты все правильно сказал. Осталось лишь пример не поленится и написать.

aspx страница
Код

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

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

<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="gvTest" AutoGenerateColumns="false" runat="server">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <%# Eval("Name") %>
                    </ItemTemplate>
                </asp:TemplateField>
                
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:DropDownList DataSource="<%# GetForDropDown() %>" SelectedValue='<%# Eval("NameId") %>' DataTextField="Name" DataValueField="NameId" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html>


aspx behind-code
Код

using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Collections.Generic;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.Configuration;

public partial class _Default : System.Web.UI.Page 
{
    private List<TestForDropDown> _testCollection = new List<TestForDropDown>();
    protected void Page_Load(object sender, EventArgs e)
    {
        _testCollection.Add(new TestForDropDown(1, "First"));
        _testCollection.Add(new TestForDropDown(2, "second"));
        _testCollection.Add(new TestForDropDown(3, "Third"));

        gvTest.DataSource = _testCollection;
        gvTest.DataBind();
    }

    protected List<TestForDropDown> GetForDropDown()
    {
        return _testCollection;
    }
}


TestForDropDown сlass 
Код

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public class TestForDropDown
{
    private int _nameId;
    private string _name;

    public int NameId 
    {
        get { return _nameId; }
        set { _nameId = value; }
    }
    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }

    public TestForDropDown()
    {
    }
    public TestForDropDown(int nameId, string name)
    {
        this._nameId = nameId;
        this._name = name;
    }

}


Дальше я думаю ты разберешься как привязать это все в ObjectDataSource. или любому другому провайдеру данных.

Автор: ANDeath 22.1.2008, 09:17
Шикарно) своим примером ты исключил мои дальнейшие вопросы, я пока не силен в данном языке и накарякал бы все наоборот... спасибо, буду разбираться...

...единственное не пойму фишки: List<ClassName>

Автор: ANDeath 22.1.2008, 11:08
...а почему компилятор ругается на:
Код

<ItemTemplate>
      <asp:DropDownList DataSource="<%# GetForDropDown() %>" SelectedValue="<%# Eval("NameId") %>" DataTextField="Name" DataValueField="NameId" runat="server" />
</ItemTemplate>


ошибкой: The server tag is not well formed

...причем мой GridView находится в теле FormView, и без выше приведенного листинга все отлично фунциклирует

Автор: Mymik 22.1.2008, 12:27
ANDeath, посмотри на подсветку кода smile видишь там свойство SelectedValue и найди 1 отличие с моим вышеприведенным кодом. (подсказка: смотри на ковычки)

Автор: ANDeath 22.1.2008, 12:51
 smile ну с кем не бывает...  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)