#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 ( Общий контроль )