powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Боковая подпись к GridView
25 сообщений из 81, страница 1 из 4
Боковая подпись к GridView
    #38135617
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу додумать как реализовать следующее.

Таблица в БД:
IdProductNamePriceAmount1 Монитор 5000 52 Видеокарта 7000 33 ЖД 3000 0... ... ... ...

Необходимо выводить такой GridView:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
       
 ---------------------
| Монитор    | 5000  |    
 ---------------------      
| Видеокарта | 7000  |
 ---------------------
| ЖД         | 3000  |  Отсутствует       
 ---------------------

Т.е. необходимо:

1. Убрать шапку с GridView.
2. Каким-то образом анализировать количество товара и при его отсутствии выводить сообщение "Отсутствует".
3. Позиционировать надпись "Отсутствует" в продолжение строки GridView. При этом надпись не должна быть обрамлена бордерами.
4. Менять шрифт и его цвет у данной надписи.

GridView находится внутри Repeater'а.

Думал полная фигня, но на практике так не показалось :)

Итак:

1. ShowHeader.
2. Решил это делать непосредственно через запрос с условием:
Код: sql
1.
SELECT ProductName, Price, CASE WHEN Amount = 0 THEN 'Отсутсвует' END As Availability FROM Products


3. Вопрос с позиционированием решается автоматически. Бордеры в принципе догадываюсь как убирать.
4. По поводу цвета шрифта для колонки тоже нагуглю.

Вопрос : попроще эту плевую задачку как-нибудь решить можно? :-)
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135622
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Immortal3. Позиционировать надпись "Отсутствует" в продолжение строки GridView. При этом надпись не должна быть обрамлена бордерами.

Не могу все-таки никак убрать это долбанную рамку :(

Пробовал вот так:
Код: c#
1.
2.
3.
4.
5.
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            e.Row.Cells[2].BorderWidth = 0;
        //  e.Row.Cells[2].Attributes["style"] = "border-right:0"; // и вот так - правая граница не убирается
        }



- нифига не меняется...
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135717
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GridView Examples for ASP.NET 2.0: Formatting the GridView
Код: xml
1.
2.
3.
<asp:BoundField DataField="Availability">
    <ItemStyle CssClass="availability-cell"></ItemStyle>
</asp:BoundField>
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135728
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<asp:GridView runat="server" ID="grid" ShowHeader="false" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="Id" />
        <asp:BoundField DataField="ProductName" />
        <asp:BoundField DataField="Price" />
        <asp:TemplateField>
            <ItemTemplate>
                <%# Eval("AmountText") != null ? string.Format("<span style='color:red'>{0}</span>", Eval("AmountText")) : null %>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>



Default
Код: 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.
35.
36.
public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            grid.DataSource = GetProducts();
            grid.DataBind();
        }
    }

    IEnumerable<ProductModel> GetProducts()
    {
        var products = new [] { 
            new ProductModel{ Id = 1, ProductName = "Монитор", Price = 5000, Amount = 5 },
            new ProductModel{ Id = 2, ProductName = "Видеокарта", Price = 7000, Amount = 3 },
            new ProductModel{ Id = 3, ProductName = "ЖД", Price = 3000, Amount = 0 },
        };
        return products;
    }
}

public class ProductModel
{
    public int Id { get; set; }
    public string ProductName { get; set; }
    public decimal Price { get; set; }
    public int Amount { get; set; }
    public string AmountText 
    { 
        get
        {
            return Amount == 0 ? "Отсутствует" : null;
        } 
    }
}



P.S. Анализ на SQL делать не стоит, к БД нужно обращаться только за исходными данными для расчета, никаких "CASE WHEN" (исключения составляют только запросы для оптимизации, но это не твой случай). Анализ делать в моделе (логика), раскрашивать в представлении (желательно).
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135745
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, зачем AmountText проверять на null? Пустая красная надпись очень заметная?
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135749
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
МСУ,

Как я выше писал, GridView находится внутри Repeater'а. Заполняется он в зависимости от текущего значения определенного поля в Repeater'е:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            SqlConnection myConnection = new SqlConnection();
            myConnection.ConnectionString = WebConfigurationManager.ConnectionStrings["MainConnectionString"].ConnectionString;
            SqlCommand myCommand = new SqlCommand();

            myCommand.CommandType = CommandType.Text;
            myCommand.CommandText = "SELECT ProductName, Price, CASE WHEN Amount = 0 THEN 'Отсутсвует' END As Availability FROM Products WHERE Id = " + DataBinder.Eval(e.Item.DataItem, "Id");
            myCommand.Connection = myConnection;

            SqlDataAdapter da = new SqlDataAdapter(myCommand.CommandText, myConnection);
            DataTable dt = new DataTable();
            da.Fill(dt);

            GridView gv = (GridView)e.Item.FindControl("GridView1");
            gv.DataSource = dt;
            gv.DataBind();
        }



Соответственно, в aspx'е у меня никаких шаблонов быть не может (к сожалению), т.к. все данные формируются в код бехайнде. Если я буду параллельно юзать и темплейты, то столбцы в гриде будут дублироваться :-(
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135751
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, зачем AmountText проверять на null? Пустая красная надпись очень заметная?
Ну чтобы не генерить на клиенте лишние пустые спаны :)

The_Immortalстолбцы в гриде будут дублироваться :-(
AutoGenerateColumns?
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135762
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, упс, не заметил. Простите :)

Спасибо огромнейшее! Пойду пробовать :)
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135793
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, кстати, а не подскажите, как по-правильному заполнять GridView программно? Я делаю это через DataTable, можно еще через DataSet - один фиг.
А как надо? :)
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135802
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_ImmortalМСУ, кстати, а не подскажите, как по-правильному заполнять GridView программно? Я делаю это через DataTable, можно еще через DataSet - один фиг.
А как надо? :)
Датасеты с дататейблами выбрось на свалку, только типизированный подход. Кури ORM, Linq, IEnumerable, IQueryable, yield.
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135848
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAМСУ, зачем AmountText проверять на null? Пустая красная надпись очень заметная?
Ну чтобы не генерить на клиенте лишние пустые спаны :)
Для любителей пораспихать вообще всю логику UI в модель представления посвящается :)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<asp:GridView runat="server" ID="grid" ShowHeader="false" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="Id" />
        <asp:BoundField DataField="ProductName" />
        <asp:BoundField DataField="Price" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label runat="server" Visible='<%# Eval("AmountVisible") %>' Text='<%# Eval("AmountText") %>' ForeColor="Red" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>



ProductModel
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class ProductModel
{
	public int Id { get; set; }
    public string ProductName { get; set; }
    public decimal Price { get; set; }
    public int Amount { get; set; }

    public string AmountText 
    { 
        get
        {
            return AmountVisible ? "Отсутствует" : null;
        } 
    }

    public bool AmountVisible 
    { 
        get
        {
            return Amount == 0;
        } 
    }        
}



выхлоп
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<table>
        <tr>
            <td>1</td>
            <td>Монитор</td>
            <td>5000</td>
            <td></td>
        </tr>
        <tr>
            <td>2</td>
            <td>Видеокарта</td>
            <td>7000</td>
            <td></td>
        </tr>
        <tr>
            <td>3</td>
            <td>ЖД</td>
            <td>3000</td>
            <td>
                <span style="color: Red;">Отсутствует</span>
            </td>
        </tr>
    </table>

...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38135895
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНу чтобы не генерить на клиенте лишние пустые спаны :)

Там совсем не нужны эти спаны, и тем более не зашивать стили в разметку.
ItemStyle-CssClass="note"
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136041
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМСУпропущено...

Ну чтобы не генерить на клиенте лишние пустые спаны :)
Для любителей пораспихать вообще всю логику UI в модель представления посвящается :)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<asp:GridView runat="server" ID="grid" ShowHeader="false" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="Id" />
        <asp:BoundField DataField="ProductName" />
        <asp:BoundField DataField="Price" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label runat="server" Visible='<%# Eval("AmountVisible") %>' Text='<%# Eval("AmountText") %>' ForeColor="Red" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>



ProductModel
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class ProductModel
{
	public int Id { get; set; }
    public string ProductName { get; set; }
    public decimal Price { get; set; }
    public int Amount { get; set; }

    public string AmountText 
    { 
        get
        {
            return AmountVisible ? "Отсутствует" : null;
        } 
    }

    public bool AmountVisible 
    { 
        get
        {
            return Amount == 0;
        } 
    }        
}



выхлоп
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<table>
        <tr>
            <td>1</td>
            <td>Монитор</td>
            <td>5000</td>
            <td></td>
        </tr>
        <tr>
            <td>2</td>
            <td>Видеокарта</td>
            <td>7000</td>
            <td></td>
        </tr>
        <tr>
            <td>3</td>
            <td>ЖД</td>
            <td>3000</td>
            <td>
                <span style="color: Red;">Отсутствует</span>
            </td>
        </tr>
    </table>

МСУ, хватит говнокод постить. ТСу ещё и рамку для последней колонки убрать нужно.

Ещё раз:
Код: xml
1.
<ItemStyle CssClass="availability-cell"></ItemStyle>
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136058
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_ImmortalskyANA,
МСУ,

Как я выше писал, GridView находится внутри Repeater'а. Заполняется он в зависимости от текущего значения определенного поля в Repeater'е:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            SqlConnection myConnection = new SqlConnection();
            myConnection.ConnectionString = WebConfigurationManager.ConnectionStrings["MainConnectionString"].ConnectionString;
            SqlCommand myCommand = new SqlCommand();

            myCommand.CommandType = CommandType.Text;
            myCommand.CommandText = "SELECT ProductName, Price, CASE WHEN Amount = 0 THEN 'Отсутсвует' END As Availability FROM Products WHERE Id = " + DataBinder.Eval(e.Item.DataItem, "Id");
            myCommand.Connection = myConnection;

            SqlDataAdapter da = new SqlDataAdapter(myCommand.CommandText, myConnection);
            DataTable dt = new DataTable();
            da.Fill(dt);

            GridView gv = (GridView)e.Item.FindControl("GridView1");
            gv.DataSource = dt;
            gv.DataBind();
        }



Соответственно, в aspx'е у меня никаких шаблонов быть не может (к сожалению), т.к. все данные формируются в код бехайнде. Если я буду параллельно юзать и темплейты, то столбцы в гриде будут дублироваться :-(Вместо того, чтобы опираться на свою интуицую и метод тыка, почитали бы лучше MSDN.

P.S.: Вы в команде работаете, или фрилансер?
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136065
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, хватит говнокод постить. ТСу ещё и рамку для последней колонки убрать нужно.
Гавнокод предложил ты, пустые спаны отдавать на клиента. А класс прикрутить или вкорячить стиль по месту - дело десятое, особого ума для этого не требуется.
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136080
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAМСУ, хватит говнокод постить. ТСу ещё и рамку для последней колонки убрать нужно.
Гавнокод предложил ты, пустые спаны отдавать на клиента. А класс прикрутить или вкорячить стиль по месту - дело десятое, особого ума для этого не требуется.Покажи, где я предлагал пустые спаны? Я лишь твоё решение потроллил.
Именно оно и приводило к пустым спанам со style='border:none', потому как ты не обратил внимание на то, что нужно ещё и рамку убрать.
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136095
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПокажи, где я предлагал пустые спаны? Я лишь твоё решение потроллил.
Вот тут 13870623

skyANAИменно оно и приводило к пустым спанам со style='border:none', потому как ты не обратил внимание на то, что нужно ещё и рамку убрать.
Оно не приводило к пустым спанам, т.к. в ItemTemplate null, учи матчасть.
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136111
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAПокажи, где я предлагал пустые спаны? Я лишь твоё решение потроллил.
Вот тут 13870623 А, извини, что не сказал тебе сразу, что решение со спанами - говнокод изначально. И проверка на null его нисколько не красит.

МСУskyANAИменно оно и приводило к пустым спанам со style='border:none', потому как ты не обратил внимание на то, что нужно ещё и рамку убрать.
Оно не приводило к пустым спанам, т.к. в ItemTemplate null, учи матчасть.Нах мне учить матчасть по говнокодингу?
И ты это, как рамку-то будешь убирать в своём решении?
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136136
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА, извини, что не сказал тебе сразу, что решение со спанами - говнокод изначально. И проверка на null его нисколько не красит.
К сожалению, ты не привел ни одного варианта решения (я привел два), кроме как начал пускать пену в сторону класса стилей на один красный цвет. Ты лучший архитехтор негавнокодных решений, браво!

skyANAНах мне учить матчасть по говнокодингу?
Отлично, то есть матчать ты не знаешь, но про гавнокод поговорить ты горазд? Чудненько :)

skyANAИ ты это, как рамку-то будешь убирать в своём решении?
А ты?
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136180
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, третий пост в топике посмотри, чудило, прежде чем фекалиями фонтанировать
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136184
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
skyANAP.S.: Вы в команде работаете, или фрилансер?
Не... Не дай Бог такому диблойду, как мне, работать в команде или предоставлять услуги фриланса :-) Я скорее любитель. На данный момент помогаю другу с проектом.


В общем, заколебался я с этой рамкой. Не убирается она - хоть убейся!

Пробовал и как Вы указали:
Код: html
1.
2.
3.
<asp:BoundField DataField="Availability">
    <ItemStyle CssClass="availability-cell"></ItemStyle>
</asp:BoundField>



Код: css
1.
2.
3.
4.
.availability-cell
{
    border-style: none;
}    



И вот так:

Код: html
1.
2.
3.
<asp:BoundField DataField="Availability">
    <ItemStyle BorderStyle="None"></ItemStyle>
</asp:BoundField>



Все равно не уходит...
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136205
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, третий пост в топике посмотри, чудило, прежде чем фекалиями фонтанировать
Ну ты дятел, я тебе о стилях уже каоторый пост пишу. Ты просто неимоверная кладезь таланта
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136210
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Immortal, другу значит помогаете, ясно. Ему быстро всё надо что-ли, нет времени книжку почитать?

Скриншот приложите, чтобы понятно было, какая рамка остаётся: у ячейки, строки или таблицы. И браузер скажите какой, а то были случаи танцев с рамками GridView в различных браузерах.
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136217
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAМСУ, третий пост в топике посмотри, чудило, прежде чем фекалиями фонтанировать
Ну ты дятел, я тебе о стилях уже каоторый пост пишу. Ты просто неимоверная кладезь таланта Ну ну... Сначала написал два поста говнокода, а потом глубокомысленно заявил: "А класс прикрутить или вкорячить стиль по месту - дело десятое, особого ума для этого не требуется".
Да ты професси А нал, что тут ещё скажешь.
...
Рейтинг: 0 / 0
Боковая подпись к GridView
    #38136269
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу ну... Сначала написал два поста говнокода, а потом глубокомысленно заявил: "А класс прикрутить или вкорячить стиль по месту - дело десятое, особого ума для этого не требуется".
Как два поста относятся к классу? В друх постах помимо класса решались и другие задачи. Посему, у тебя как всегда холостой выперд.

skyANAДа ты професси А нал, что тут ещё скажешь.
Чего не скажешь о тебе
...
Рейтинг: 0 / 0
25 сообщений из 81, страница 1 из 4
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Боковая подпись к GridView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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