powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / AjaxControlToolkit Raiting
30 сообщений из 30, показаны все 2 страниц
AjaxControlToolkit Raiting
    #37460333
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем. Попробовал вставить в интернет-магазин рейтинг к каждому из товаров.
http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/rating/rating.aspx

Если втавить статически к одному товару, то всё работает:
Код: plaintext
1.
2.
3.
4.
5.
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
                </asp:ToolkitScriptManager>
                <asp:Rating ID="ThaiRating" runat="server" CurrentRating="2" MaxRating="5" StarCssClass="ratingStar"
                    WaitingStarCssClass="savedRatingStar" FilledStarCssClass="filledRatingStar" EmptyStarCssClass="emptyRatingStar" 
                    RatingAlign="Vertical" RatingDirection="RightToLeftBottomToTop"/>
                <div id="Product" runat="server">

Но если вставлять к каждому из товаров рейтинг динамически:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Hardware = new Table();
row = new TableRow();
                    cell = new TableCell();
                    AjaxControlToolkit.Rating r = new AjaxControlToolkit.Rating();
                    r.Attributes.Add("id", item.ID.ToString());                    
                    r.Attributes.Add("CurrentRating", "2");
                    r.Attributes.Add("MaxRating", "5");
                    r.Attributes.Add("StarCssClass", "ratingStar");
                    r.Attributes.Add("WaitingStarCssClass", "savedRatingStar");
                    r.Attributes.Add("FilledStarCssClass", "filledRatingStar");
                    r.Attributes.Add("EmptyStarCssClass", "emptyRatingStar");
                    r.Attributes.Add("RatingAlign", "Vertical");
                    r.Attributes.Add("RatingDirection", "RightToLeftBottomToTop");
                    cell.Controls.Add(r); 
                    cell.Controls.Add(label);
                    row.Cells.Add(cell);
                    Hardware.Controls.Add(row);

то выдаёт такую ошибку:
Multiple controls with the same ID '_ClientState' were found. FindControl requires that controls have unique IDs.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Multiple controls with the same ID '_ClientState' were found. FindControl requires that controls have unique IDs.

у них на форуме
http://ajaxcontroltoolkit.codeplex.com/workitem/15455
человек ответил, что у него то же самое в новой версии, но в старой всё работало исправно.

Хотя тут
http://support.microsoft.com/kb/834608
я нашёл (в самом низу), что такая проблема существует и решается с помощью класса
PartialCachingControl, т.е. я дописал:
Код: plaintext
1.
2.
3.
if (((PartialCachingControl)r).CachedControl != null)
                    {
                        cell.Controls.Add(r);
                    }
но это решением проблемы не стало.

Скажите - можно ли как-то динамически создавать ajax toolkit-овский рейтинг или нет?
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37460403
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я конечно дико извиняюся за надоедливость, но почему бы не использовать репитер/гридвью/листвью...
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37460440
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если использовать гридвью вместо таблицы, то toolkit raiting будет работать?
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37460447
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я в ACT не спец, но по идее должен
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37460931
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал как вы сказали - вместо table поставил 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.
[System.ComponentModel.DataObject]
        public class Tablist
        {
            public string  name_n {get;set;}
            public string name_org {get;set;}
            public string street {get;set;}            
        }

        public List<Tablist> GetTablists()
        {
            List<Tablist> result = new List<Tablist>();            
            result.Add(new Tablist() { name_n = "name_test", name_org = "test_org", street = "sovetskaya" });
            result.Add(new Tablist() { name_n = "name_test2", name_org = "test_org2", street = "sovetskaya2" });

            return result;
        }

        protected void Page_Load(object sender, EventArgs e)
        {      
                GridView Hardware = new GridView();                
                Hardware.AllowPaging = true;
                Hardware.PageSize=15;
                Hardware.CssClass = "hard";
                Hardware.AutoGenerateColumns=true;
                Hardware.EnableViewState = false;

                Hardware.DataSource = GetTablists();
                Hardware.DataBind();
                Product.Controls.Add(Hardware);
            }

Каким тогда образом можно вставить AjaxControlToolkit.Rating?
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37460954
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде как с вашим гридвью всё намного сложнее, чем с обычной таблицей
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37460973
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гридвью вам предложили не для того чтобы вы и его добавляли динамически на страницу. в чем глубокий смысл?
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461000
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, понял. так бы сразу и сказали. Я подумал, что так же, как и таблицу - динамически.
Сейчас попробую сделать всё в html
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461200
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал как вы сказали:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:shopConnectionString %>" 
                    SelectCommand="SELECT * FROM [Processor]"></asp:SqlDataSource>
                <asp:GridView ID="OperationHistoryList" runat="server" DataSourceID="SqlDataSource1"
                    AllowPaging="True" PageSize="15" CssClass="data" AutoGenerateColumns="False"
                    EnableViewState="False">
                    <Columns>                        
                        <asp:BoundField DataField="Name" />
                        <asp:BoundField DataField="Price" />                        
                    </Columns>
                </asp:GridView>

Каким образом теперь можно в гридвью вставить к каждому товару рейтинг?

внутрь <Columns> вставлять:
Код: plaintext
1.
2.
<asp:Rating ID="ThaiRating" runat="server" CurrentRating="2" MaxRating="5" StarCssClass="ratingStar"
                    WaitingStarCssClass="savedRatingStar" FilledStarCssClass="filledRatingStar" EmptyStarCssClass="emptyRatingStar"
                    RatingAlign="Vertical" RatingDirection="RightToLeftBottomToTop" />
нельзя
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461208
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Studentsвнутрь <Columns> вставлять:
Код: plaintext
<asp:Rating />
нельзя
почему?
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461213
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461223
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, что только динамически можно. Но тогда появляется ошибка, которую я описал в самом начале.
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461239
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну давайте посмотрим, что говорит нам на тему gridview.columns, msdn....

http://msdn.microsoft.com/ru-ru/library/system.web.ui.webcontrols.gridview.columns(VS.90).aspx

и после это обратим внимание на templatefield
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461240
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudentsПолучается, что только динамически можно.
железная логика.
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461269
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо. Про TemplateField раньше ничего не знал
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461323
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно ли вставить изображение? ведь нужно знать ID.
В С# я мог написать:
Код: plaintext
1.
2.
3.
4.
im = new Image();
                    im.Style["margin"] = "0 auto";                    
                    im.CssClass = "photos";
                    im.ImageUrl = "photos/proc/"+item.ID.ToString()+".jpg";
                    cell.Controls.Add(im);

а через html можно как-то вставить изображение?
или можно в эту гридвью столбик с изображением добавить динамически через C#, а остальное всё статически сделать?
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461330
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461683
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoria, скажите, можно ли как-то при формировании этого гридвью передавать ячейке атрибуты. Мне нужно, чтобы знать, какой товар я добавил в корзину (см. рисунок).
И для того, чтобы при нажатии на товар открылось модальное окно этого товара, но для этого мне нужно знать ID
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461686
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разместите там HiddenField
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461691
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, в С# при создании таблицы для передачи ID я мог написать:
Код: plaintext
cell.Attributes.Add("id",item.ID.ToString())

Или же для того, чтобы именно та ячейка, в которой название:
Код: plaintext
cell.Attributes.Add("class","point")

Код: plaintext
1.
2.
3.
.point
{
    cursor: pointer
}

А как таоке можно реализовать в html? ведь gridview я статически создал
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461732
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У BoundField есть свойство DataField - заполняет данными из БД.
А у HiddenField есть аналогичное? я на msdn не нашёл.

попробовал написать вот так:
Код: plaintext
1.
2.
3.
4.
5.
<asp:TemplateField HeaderImageUrl="photos/basket.gif">
                                <ItemTemplate>
                                    <asp:HiddenField ID="hf" runat="server" Value="ID" />
                                    <asp:CheckBox ID="CheckBox1" runat="server" />
                                </ItemTemplate>
                            </asp:TemplateField>
но в value он подставляет не текущий ID товара, а просто слово "ID"
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37461745
няка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37462382
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается вот такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {            
            ArrayList ProductList = new ArrayList();
            ProductList.Add(new Product("ID", ID));
            
            ListRepeater.DataSource = ProductList;
            ListRepeater.DataBind();
        }
</script>

http://msdn.microsoft.com/ru-ru/library/wzht0517.aspx%5Dhttp://msdn.microsoft.com/ru-ru/library/wzht0517.aspx]http://msdn.microsoft.com/ru-ru/library/wzht0517.aspx]http://msdn.microsoft.com/ru-ru/library/wzht0517.aspx
здесь написано, что используется "пользовательский класс Product".
'Computer.Processor.Product' is a 'field' but is used like a 'type'

строковое свойство Model и числовое свойство UnitPrice - это будет как строковое свойство ID и числовое свойство "значение ID". Правильно?
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37462420
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, всё разобрался. там чуть ниже было напсиано. Не увидел просто
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37462459
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
написал в Product.cs:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
string _ID;    

    public Product(string ID)
    {
        _ID = ID;
    }
    
    public string ID
    {
        get { return _ID; }
        set { _ID = value; }
    } 

в Processor.aspx:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            // Create and populate an ArrayList to store the products.
            ArrayList ProductList = new ArrayList();
            ProductList.Add(new Product("ID"));

            // Bind the array list to Repeater
            ListRepeater.DataSource = ProductList;
            ListRepeater.DataBind();
        }
</script>

непонятным остаётся только - куда вставлять конструкцию:
Код: plaintext
1.
<asp:Repeater id="ListRepeater" runat="server">
</asp:Repeater>

Код: 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.
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:shopConnectionString %>"
                        SelectCommand="SELECT * FROM [Processor]"></asp:SqlDataSource>
                    <asp:GridView ID="MainGrid" runat="server" DataSourceID="SqlDataSource1" AllowPaging="True"
                        PageSize="15" CssClass="gr" AutoGenerateColumns="False" EnableViewState="False">
                        <Columns>                        
                            <asp:Repeater id="ListRepeater" runat="server">
                                <asp:TemplateField>
                                    <itemtemplate>
                                    <asp:Rating ID="ThaiRating" runat="server" CurrentRating="2" MaxRating="5" StarCssClass="ratingStar"
                                        WaitingStarCssClass="savedRatingStar" FilledStarCssClass="filledRatingStar" EmptyStarCssClass="emptyRatingStar"
                                        RatingAlign="Vertical" RatingDirection="RightToLeftBottomToTop" />
                                </itemtemplate>
                                </asp:TemplateField>
                                <asp:ImageField DataImageUrlField="ID" DataImageUrlFormatString="~\photos\proc\{0}.jpg"
                                    AlternateText="No Photo" NullDisplayText="No image on file." HeaderText="Фото"
                                    ReadOnly="true" />
                                <asp:BoundField DataField="Name" HeaderText="Название" SortExpression="Name">
                                    <controlstyle width="150px" height="100px" />
                                    <itemstyle width="150px" height="100px" />
                                    <headerstyle width="150px" height="100px" />
                                </asp:BoundField>
                                <asp:BoundField DataField="Price" HeaderText="Цена" SortExpression="Price">
                                    <controlstyle width="70px" height="100px" />
                                    <itemstyle width="70px" height="100px" />
                                    <headerstyle width="70px" height="100px" />
                                </asp:BoundField>
                                <asp:TemplateField HeaderImageUrl="photos/basket.gif">
                                    <itemtemplate>
                                    <asp:HiddenField ID="hf" runat="server"  />
                                    <asp:CheckBox ID="CheckBox1" runat="server" />
                                </itemtemplate>
                                </asp:TemplateField>
                            </asp:Repeater>
                        </Columns>
                    </asp:GridView>

т.к. появляется ошибка
System.Web.UI.WebControls.DataControlFieldCollection must have items of type 'System.Web.UI.WebControls.DataControlField'. 'asp:Repeater' is of type 'System.Web.UI.WebControls.Repeater'.
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37462483
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут кто-нибудь есть?
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37462504
няка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Students,

это пипец полный

какой нахрен репитер? при чем тут репитер?
вы хоть бы немного головой думали
нахрена вы ваще все это написали?
че вы тупо то из мсдн передираете
эту ссылку я дал для ознакомления всего лишь

у вас уже есть датасорс
вам из него всего лишь нужно взять данные
например: <asp:HiddenField ID="hf" runat="server" Value='<%# Eval("ID")%>' />
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37462570
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
<asp:HiddenField ID="hf" runat="server" Value='<%# Eval("ID")%>' />
<asp:CheckBox ID="CheckBox1" runat="server"/>

Всё равно нельзя, он ID="CheckBox1" преобразует в
ID="MainGrid_CheckBox1_1"
ID="MainGrid_CheckBox1_2"
ID="MainGrid_CheckBox1_3"
и т. д.

поэтому нельзя делать так:
$('#CheckBox1').click(function () {
alert($('#hf').attr("id"));
});

на что тогда обработчик повесить?
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37462585
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, что статически никак ни сделать
...
Рейтинг: 0 / 0
AjaxControlToolkit Raiting
    #37462586
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students
Код: plaintext
<asp:CheckBox ID="CheckBox1" runat="server" onclick="MyFunction(this);" />
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / AjaxControlToolkit Raiting
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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