how can i divide two eval variables - c#

i tried and get the sum of two numbers by getting through eval
<%# Convert.ToDecimal(Eval("total"))+ Convert.ToDecimal(Eval("tax")) %>
by doing this i got the sum of (total + tax)
now i need to find the division. Is it possible to divide like <%# Convert.ToDecimal(Eval("total"))/ Convert.ToDecimal(Eval("qty")) %> the above.
my code in detail
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td class="text-left"><%#Eval("rowId") %></td>
<td><%#Eval("product_name") %> - <%#Eval("product_des") %></td>
<td class="text-center"><%#Eval("qty") %></td>
<td class="text-center"><%#Eval("uom") %></td>
<td class="text-center"><%#Eval("tax_percent") %></td>
<td class="text-right"><%# Convert.ToDouble(Convert.ToDecimal(Eval("total"))/ Convert.ToDecimal(Eval("qty")))%></td>
<td class="text-right"><%# Convert.ToDecimal(Eval("total"))+ Convert.ToDecimal(Eval("tax")) %></td>
<td class="text-center"><%#Eval("type") %></td>
<td class="text-right">
<asp:ImageButton ID="ibtnEdit" runat="server" ImageUrl="assets/btn/edit_btn.png" OnClick="ibtnEdit_Click" CommandArgument='<%#Eval("rowId") %>' />
<asp:ImageButton ID="ibtn_Delete" runat="server" ImageUrl="assets/btn/delete_btn.png" OnClick="ibtn_Delete_Click" CommandArgument='<%#Eval("rowId") %>' OnClientClick="return confirm('Are you sure you want to delete?');" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
please help me. thanks in advance

Related

asp.net - SelectItemTemplate doesn't work

I have two tables. First works fine - if button ID="Button1" CommandName="Select" pressed selected item turns red. But second table doesn't do the same if I pressed it's own button ID="Button2" CommandName="Select".
first table listView ID="ListViewGrSDtudents"
second table listView ID="ListViewGroups"
Does somebody now what why it doesn't work?
It's my .aspx code:
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<!-- Таблица групп -->
<div>
<asp:ListView ID="ListViewGroups"
runat="server"
ItemType="BD_Class_Library.studentGroup"
DataKeyNames="groupId"
SelectMethod="GetStudGroups"
InsertMethod="InsertStudGroup"
UpdateMethod="UpdateGroup"
DeleteMethod="DeleteGroup"
OnSelectedIndexChanged="ListViewGroups_SelectedIndexChanged">
<InsertItemTemplate>
<tr style="background-color: yellowgreen">
<td></td>
<td>
<input id="groupName" runat="server" value="<%# BindItem.groupName %>" /></td>
<td>
<asp:Button ID="Button1" Width="100%" CommandName="Insert" runat="server" Text="Вставить" />
</td>
</tr>
</InsertItemTemplate>
<EditItemTemplate>
<tr style="background-color: yellow">
<td><%# Item.groupId %></td>
<td>
<input id="groupName" runat="server" value="<%# BindItem.groupName %>" /></td>
<td>
<asp:Button CommandName="Update" runat="server" Text="Сохранить" />
<asp:Button CommandName="Cancel" runat="server" Text="Отмена" />
</td>
</tr>
</EditItemTemplate>
<LayoutTemplate>
<table border="1">
<tr style="background-color: darkgray">
<th>ID</th>
<th>Группа</th>
<th></th>
</tr>
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<SelectedItemTemplate>
<tr style="background-color: red">
<td><%# Item.groupId %></td>
<td><%# Item.groupName %></td>
<td>
<asp:Button CommandName="Edit" runat="server" Text="Изменить" />
<asp:Button CommandName="Delete" runat="server" Text="Удалить" />
</td>
</tr>
</SelectedItemTemplate>
<ItemTemplate>
<tr style="background-color: grey">
<td><%# Item.groupId %></td>
<td><%# Item.groupName %></td>
<td>
<asp:Button CommandName="Select" runat="server" Text="Выбрать" />
<asp:Button CommandName="Edit" runat="server" Text="Изменить" />
<asp:Button CommandName="Delete" runat="server" Text="Удалить" />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
</div>
<div>
<asp:ListView
ID="ListViewGrSDtudents"
runat="server"
ItemType="BD_Class_Library.student"
DataKeyNames="studId"
OnSelectedIndexChanging="ListViewGrSDtudents_SelectedIndexChanging"
OnSelectedIndexChanged="ListViewGrSDtudents_SelectedIndexChanged">
<SelectedItemTemplate>
<tr style="background-color: red">
<td><%# Item.studId %></td>
<td><%# Item.studFam %></td>
<td><%# Item.studName %></td>
<td><%# Item.studOtc %></td>
<td><%# Item.studBiletNum %></td>
</tr>
</SelectedItemTemplate>
<ItemTemplate>
<tr style="background-color: grey">
<td><%# Item.studId %></td>
<td><%# Item.studFam %></td>
<td><%# Item.studName %></td>
<td><%# Item.studOtc %></td>
<td><%# Item.studBiletNum %></td>
<td><asp:Button ID="Button2" CommandName="Select" runat="server" Text="Выбрать" /></td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table border="1" style="width: 60%">
<tr id="groupPlaceholder" runat="server"></tr>
<tr style="background-color: aqua">
<th>ID студента</th>
<th>Фамилия</th>
<th>Имя</th>
<th>Отчество</th>
<th>Студ. билет</th>
</tr>
<tr id="itemPlaceholder" runat="server" itemplaceholderid="itemPlaceholderStudent"></tr>
</table>
</LayoutTemplate>
<EmptyDataTemplate>
<table border="1" style="width: 60%">
<tr style="background-color: aqua">
<th>ID студента</th>
<th>Фамилия</th>
<th>Имя</th>
<th>Отчество</th>
<th>Студ. билет</th>
<th></th>
</tr>
<tr style="background-color: grey">
<td colspan="5" style="text-align: center">В данной группе нет студентов</<td>
</tr>
</table>
</EmptyDataTemplate>
</asp:ListView>
</div>
</form>
</body>
</html>
event - ListViewGrSDtudents_SelectedIndexChanged code:
protected void ListViewGrSDtudents_SelectedIndexChanged(object sender, EventArgs e)
{
int selStudent = (int)ListViewGrSDtudents.SelectedDataKey.Value;
Session["SelectedStudent"] = selStudent;
Session["SelectedStudentIndex"] = ListViewGrSDtudents.SelectedIndex;
Response.Redirect("~/Default.aspx");
}
Description Part 1
Description Part 2

Databinder.eval inside gridview inside repeater

Is there a way to put the following code in a gridview so I can do paging without updating the entire page.
<ASP:PANEL id="ResultsPanel" border="1" HorizontalAlign="Center" runat="server" Width="100%">
<ASP:REPEATER id="SearchResultsRepeater" runat="server" EnableViewState="False">
<HEADERTEMPLATE>
<TABLE BORDER="1" Style="width:800px"" Align="center" >
<TR>
<TD Class="StdSectionHeader2" Style="color: #FFFFFF;" Colspan="8">Select a Provider Name</TD>
</TR>
<TR>
<TH ID="header1" Class="StdTablePadding5 BlueTD" >Name</TH>
<TH ID="header2" Class="StdTablePadding5 BlueTD">Service Area</TH>
<TH ID="header4" Class="StdTablePadding5 BlueTD">Gender</TH>
<TH ID="header5" Class="StdTablePadding5 BlueTD">City</TH>
<TH ID="header6" Class="StdTablePadding5 BlueTD">Zip Code</TH>
<TH ID="header7" Class="StdTablePadding5 BlueTD">Processing<BR />Status</TH>
<TH ID="header8" Class="StdTablePadding5 BlueTD">Phone</TH>
</TR>
</HEADERTEMPLATE>
<ITEMTEMPLATE>
<TD Class="StdTablePadding5"><a class="three" href="default.asp" target="_blank">
<%# getStartLink(DataBinder.Eval(Container.DataItem, "ServiceAreaName").ToString() )%>
<%# getNextPage(DataBinder.Eval(Container.DataItem, "ServiceAreaName").ToString(),HCQA.ReferralRegistry.UI.Validation.EncodeDigits(((HCQA.ReferralRegistry.UI.User)Session["User"]).EncryptionKey,DataBinder.Eval(Container.DataItem, "IndividualID").ToString()))%>
<%# getMidLink(DataBinder.Eval(Container.DataItem, "ServiceAreaName").ToString())%>
<%# DataBinder.Eval(Container.DataItem, "IndividualName").ToString()%>
<%# getEndLink(DataBinder.Eval(Container.DataItem, "ServiceAreaName").ToString())%></a>
</TD>
<TD HEADERS="header2" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "ServiceAreaName") %></TD>
<TD HEADERS="header4" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "gender") %></TD>
<TD HEADERS="header5" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "city") %></TD>
<TD HEADERS="header6" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "ZipCode") %></TD>
<TD HEADERS="header7" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "ProcessingStatus") %></TD>
<TD HEADERS="header8" Class="StdTablePadding5"><%# Util.FormatPhoneNumber(DataBinder.Eval(Container.DataItem, "PhoneNumber").ToString().Trim())%></TD>
</TR>
</ITEMTEMPLATE>
<ALTERNATINGITEMTEMPLATE>
<TR CLASS="AlternatingItemTemplate">
<TD HEADERS="header1" Class="StdTablePadding5">
<%# getStartLink(DataBinder.Eval(Container.DataItem, "ServiceAreaName").ToString() )%>
<%# getNextPage(DataBinder.Eval(Container.DataItem, "ServiceAreaName").ToString(),HCQA.ReferralRegistry.UI.Validation.EncodeDigits(((HCQA.ReferralRegistry.UI.User)Session["User"]).EncryptionKey,DataBinder.Eval(Container.DataItem, "IndividualID").ToString()))%>
<%# getMidLink(DataBinder.Eval(Container.DataItem, "ServiceAreaName").ToString())%>
<%# DataBinder.Eval(Container.DataItem, "IndividualName").ToString()%>
<%# getEndLink(DataBinder.Eval(Container.DataItem, "ServiceAreaName").ToString())%>
</TD>
<TD HEADERS="header2" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "ServiceAreaName") %></TD>
<TD HEADERS="header4" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "gender") %></TD>
<TD HEADERS="header5" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "city") %></TD>
<TD HEADERS="header6" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "ZipCode") %></TD>
<TD HEADERS="header7" Class="StdTablePadding5"><%# DataBinder.Eval(Container.DataItem, "ProcessingStatus") %></TD>
<TD HEADERS="header8" Class="StdTablePadding5"><%# Util.FormatPhoneNumber(DataBinder.Eval(Container.DataItem, "PhoneNumber").ToString().Trim())%></TD>
</TR>
</ALTERNATINGITEMTEMPLATE>
<FOOTERTEMPLATE>
</table>
</FOOTERTEMPLATE>
</ASP:REPEATER>

Page Break ASP.NET files

I'm currently trying to paginate a list of records, however; after the last table, the page break leaves an empty page. The set up is an Aspx files that incorporates two ascx files to draw the table records.
<%# Control Language="C#" AutoEventWireup="true" CodeBehind="Table.ascx.cs" Inherits="%>
<br class="clear" /><br/>
<table class="report-table" cellspacing="0" cellpadding="2">
<asp:Repeater ID="Repeater1" runat="server" DataSource='<%# Eval("PatientBills") %>' OnItemDataBound="Repeater1_OnItemDataBound">
<HeaderTemplate>
<tr>
<td>Seq</td>
<td>Billing Id</td>
<td>Patient Id</td>
<td>Patient Name</td>
<td>Sex</td>
<td class="PrintNormalWrap">Admit Date</td>
<td class="PrintNormalWrap" style="width: 80px;">Social Security</td>
<td>DOB</td>
<td>POS</td>
<td>CPT</td>
<td>Mods</td>
<td style="width: 220px;">Diagnosis</td>
<td class="PrintNormalWrap">Referring Provider(UPIN)/ Comment</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr class="billRowShade<%# Container.ItemIndex % 2 %>">
<asp:TableCell ID="tableCellSequence" runat="server"><%# Container.ItemIndex + 1 %></asp:TableCell>
<td><%# FormatBillingId(Eval("Bill.BillingId")) %></td>
<td><%# FormatField(Eval("Patient.PatientId")) %></td>
<td id="printPatientName"><%# FormatField(Eval("Patient.LastName")) %>, <%# FormatField(Eval("Patient.FirstName")) %></td>
<td><%# FormatField(Eval("Patient.Sex")) %></td>
<td><%# FormatShortDate(Eval("Patient.DateOfAdmittance"))%></td>
<td><%# FormatField(Eval("Patient.SocialSecurityNumber")) %></td>
<td><%# FormatShortDate(Eval("Patient.DateOfBirth"))%></td>
<td><%# FormatField(Eval("Bill.Pos")) %></td>
<td><%# FormatField(Eval("Bill.CptCode")) %></td>
<td><%# FormatField(Eval("Bill.Mod")) %></td>
<td><%# FormatDiagnoses(Eval("Bill.Diagnoses"), Eval("Bill.BillDate"), Eval("Bill.SiteName")) %></td>
<td class="PrintNormalWrap"><%# FormatNotes(Eval("Patient.ReferringMd"), Eval("Patient.RefUpin"), Eval("Bill.Notes"), Eval("Bill.TimeEntry")) %> <%# FormatSupervisor( Eval("Bill.SupervisedByName"), Eval("Bill.DoctorName") ) %></td>
</tr>
<asp:TableRow ID="tableRowSpecialtyFieldDetails" runat="server" CssClass="specialtyFieldDetails">
<asp:TableCell ID="TableCell1" colspan="12" runat="server"><span id="spanSpecialtyFieldDetails" runat="server"></span></asp:TableCell>
</asp:TableRow>
</ItemTemplate>
</asp:Repeater>
</table>
<p style="page-break-after:always"></p>
<br/>

Is there anyway to change style of one row alternatively in a loop

In my ascx file I use a Repeater to create rows for the table. So basically I just repeat one row and populate the data into that:
<asp:Repeater ID="companyRepeater" runat="server">
<ItemTemplate>
<tr class = "DGItemStyle" id="myresultsRow1" runat="server">
<td style="padding:0.5em;" align="center"><%#Eval("compnSN1") %></td>
<td style="padding:0.5em;"><%#Eval("compnAddress1") %></td>
</tr>
</Itemtemplate>
</asp:Repeater>
But I need to change the style of the row every time, from:
CssClass="DGItemStyle"
to
CssClass="DGAlternatingItemStyle"
then again and again.
So what I tried is replace : class = "DGItemStyle" by : <%#Eval("compnStyle1")%> , and I also populate compnStyle1 by the string
CssClass="DGItemStyle" and CssClass="DGAlternatingItemStyle"
alternatively in my codebehind.
But looks like the tag doesn't accept this solution. It shows this error:
Parser Error Message: The server tag is not well formed.
So how could I archive this ?
Use Repeater.AlternatingItemTemplate
<asp:Repeater ID="companyRepeater" runat="server">
<AlternatingItemTemplate>
<tr class = "DGAlternatingItemStyle" id="myresultsRow1" runat="server">
<td style="padding:0.5em;" align="center"><%#Eval("compnSN1") %></td>
<td style="padding:0.5em;"><%#Eval("compnAddress1") %></td>
</tr>
</AlternatingItemTemplate>
<ItemTemplate>
<tr class = "DGItemStyle" id="myresultsRow1" runat="server">
<td style="padding:0.5em;" align="center"><%#Eval("compnSN1") %></td>
<td style="padding:0.5em;"><%#Eval("compnAddress1") %></td>
</tr>
</Itemtemplate>
</asp:Repeater>
Check this link
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.alternatingitemtemplate%28v=vs.110%29.aspx
From MSDN
<AlternatingItemTemplate>
<tr>
<td style="background-color:Aqua">
<b><%# Container.DataItem %></b>
</td>
</tr>
</AlternatingItemTemplate>
<ItemTemplate>
<tr>
<td style="background-color:Silver">
<%# Container.DataItem %>
</td>
</tr>
</ItemTemplate>

ListView sum column total and display in label returns null

I'm trying to sum all the values from the July column into a label with ID of july. Here's the markup:
<asp:ListView ID="leaveListView" runat="server" ItemPlaceholderID="itemPlaceholder" OnItemDataBound="leaveListView_ItemDataBound">
<LayoutTemplate>
<table class="budgetList">
<thead>
<tr>
<td>Project Number</td>
<td>Account</td>
<td>Project Name</td>
<td>July</td>
</tr>
</thead>
<tbody>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</tbody>
<tfoot>
<tr class="projectRowTotal">
<td>Project Totals</td>
<td></td>
<td></td>
<td><asp:Label ID="july" runat="server" Text=""></asp:Label></td>
</tr>
</tfoot>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr class="<%# Container.DataItemIndex % 2 == 0 ? "" : "even" %>">
<td><%# Eval("Project") %></td>
<td><%# Eval("Account") %></td>
<td><%# Eval("ProjectNumber") %></td>
<td><%# Eval("July") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
I'm using the ItemDataBound event to sum, but it's returning null. This is the code-behind:
decimal july = 0m;
protected void leaveListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
july += Convert.ToDecimal(e.Item.FindControl("July"));
}
Label julySum = (Label)leaveListView.FindControl("july");
julySum.Text = string.Format("{0:C}", (decimal?)july);
}
What do I need to do to get this to work?
as my comments suggested, here is solution:
<table class="budgetList">
<thead>
<tr>
<td>Project Number</td>
<td>Account</td>
<td>Project Name</td>
<td>July</td>
</tr>
</thead>
<tbody>
<asp:ListView ID="leaveListView" runat="server" ItemPlaceholderID="itemPlaceholder">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</LayoutTemplate>
<ItemTemplate>
<tr class="<%# Container.DataItemIndex % 2 == 0 ? "" : "even" %>">
<td><%# Eval("Project") %></td>
<td><%# Eval("Account") %></td>
<td><%# Eval("ProjectNumber") %></td>
<td><%# Eval("July") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
</tbody>
<tfoot>
<tr class="projectRowTotal">
<td>Project Totals</td>
<td></td>
<td></td>
<td><asp:Label ID="july" runat="server" Text=""></asp:Label></td>
</tr>
</tfoot>
</table>
havent't actually tried it, but should work fine ... + in code, where you bind data:
leaveListView.ItemsSource = <data>;
// simply place the value in label directly
july.Text = <data.sum>
now just make sum in code and you're done, no need for itemdatabound event
e.Item.FindControl("July") return null because no control with that existing in the ListView
Solution
You want to store July's value into HiddenField (or some other field) so that you can retrieve them back in ItemDataBound event.
<asp:ListView ID="leaveListView"...>
<ItemTemplate>
<tr class="<%# Container.DataItemIndex % 2 == 0 ? "" : "even" %>">
<td><%# Eval("Project") %></td>
<td><%# Eval("Account") %></td>
<td><%# Eval("ProjectNumber") %></td>
<td><%# Eval("July") %></td>
</tr>
<asp:HiddenField runat="server" ID="JulyHiddenField"
Value="<%# Eval("July") %>"/>
</ItemTemplate>
</asp:ListView>
decimal july = 0m;
protected void leaveListView_ItemDataBound(object sender,
ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
var hiddenField = e.Item.FindControl("JulyHiddenField") as HiddenField;
july += Convert.ToDecimal(hiddenField.Value);
}
Label julySum = (Label)leaveListView.FindControl("july");
julySum.Text = string.Format("{0:C}", (decimal?)july);
}
For Good Design Practice
Please name your control properly. Eg. <asp:Label ID="JulyLabel" runat="server" Text=""></asp:Label>. Currently, you have no way of knowing is july is what.

Categories