объединение между сценариями

#c# #asp.net #linq #entity-framework #linq-to-entities

#c# #asp.net #linq #entity-framework #linq-to-entities (ссылки на объекты)

Вопрос:

 DriverId      OrderCount      OrderCountWhereNameIsNotNull
12               2                         2
13               1                         1
  

это текущая таблица, которая создается с помощью этого кода:

  public partial class Control : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
    {
        OrderDataRepository rep = new OrderDataRepository();

        var results = rep.GetAllOrderData().
                      GroupBy(o => o.DRIVER_ID).
                      Select(g =>
                                new
                                {
                                    DriverId = g.Key,
                                    OrderCount = g.Count(),
                                    OrderCountWhereNameIsNotNull = 
                                                      g.Count(o => o.RECEIVE_NAME != null)
                                }).ToList();

        DataViewer.DataSource = results;
        DataViewer.DataBind();
    }

    }
  

вместо таблицы мне нужно взять и распечатать для каждого идентификатора драйвера индикатор выполнения, как в этом скрипте:

   int OrderCount, OrderCountWhereNameIsNotNull;
System.Web.UI.WebControls.TableRow oRow;
System.Web.UI.WebControls.TableCell oCell;
System.Web.UI.HtmlControls.HtmlGenericControl oDiv;

while (true)
//loop through records
//do while not eof
{
    oRow = new System.Web.UI.WebControls.TableRow();
    oCell = new System.Web.UI.WebControls.TableCell();
    oDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
    OrderCount = 200; //get value from DB, convert to meaningful width
    OrderCountWhereNameIsNotNull = 100; //get value from DB, convert to meaningful width

    oDiv.InnerHtml = "<div style='border: 3px solid black; width: "   OrderCount   "px;'>";
    oDiv.InnerHtml  = Environment.NewLine   "  <div style='border: 0px; background-color: red; width: "   OrderCountWhereNameIsNotNull   "px;'>amp;nbsp;</div>";
    oDiv.InnerHtml  = Environment.NewLine   "</div>";
    oCell.Controls.Add(oDiv);
    oRow.Cells.Add(oCell);
    tblData.Rows.Add(oRow);
}
  

Я не могу их объединить, может быть, скрипт не подходит … пожалуйста, помогите

на данный момент моя главная страница:

 <form id="Form1" runat="server">
        <asp:GridView runat="server" ID="DataViewer">
        </asp:GridView>
    </form>
  

введите описание изображения здесь

Комментарии:

1. Как насчет добавления столбца TemplateColumn в вашу сетку с индикатором прогресса в нем?

2. мне нужно использовать свой код или какой-либо другой код, потому что это не индикатор выполнения — он должен показывать, сколько задач у каждого драйвера и сколько у него уже есть done…so можете ли вы помочь мне подключить мой скрипт к коду или помочь мне с другим кодом?

Ответ №1:

Вероятно, вам будет проще привязать вашу сетку к вашему набору данных, чем создавать таблицу, которая пытается внедриться в сетку:

 <asp:GridView ID="DataViewer" runat="server">
    <Columns>
        <TemplateColumn>
            <ItemTemplate>
Put the code for rendering your progress bar here in pure HTML. 
When you come to a value that will come from a row in your data, do like this:
<div style='width: <%# Eval("OrderCount") %>' />
            </ItemTemplate>
        </TemplateColumn>
    </Columns>
</asp:GridView>
  

Комментарии:

1. знаете ли вы, как с помощью фреймворка wntity я могу установить <% # Eval («OrderCount») %> вместо <asp:GridView runat=»server» ID=»DataViewer»> </asp:GridView>

2. …какое отношение Entity Framework имеет к элементам управления в вашем пользовательском интерфейсе? "OrderCount" будет в зависимости от того, какой столбец в вашем источнике данных содержит ваши данные.

3. как установить для <%# Eval(«OrderCount») %> значение OrderCount из кода, который я вставил, где OrderCount = g.Count()

4. я получаю ошибку при использовании вашего кода: Описание ошибки синтаксического анализатора: Ошибка произошла во время синтаксического анализа ресурса, необходимого для обслуживания этого запроса. Пожалуйста, ознакомьтесь со следующими конкретными сведениями об ошибке синтаксического анализа и соответствующим образом измените исходный файл. Сообщение об ошибке синтаксического анализатора: System.Web.UI.WebControls. DataControlFieldCollection должен содержать элементы типа ‘System.Web.UI.WebControls. Поле контроля данных». ‘TemplateColumn’ имеет тип ‘System.Web.UI.HtmlControls. HtmlGenericControl ( Общий контроль )