calling a function in repeater asp.net - asp.net

I want to call a function to bind data to Repeater . Do I need to Set dataSource Property of this control or Repeater .DataBind() will work.
<asp:Repeater ID="RepeaterDays" runat="server">
<ItemTemplate>
<ul>
<asp:Label ID="lblDays" runat="server" Text='<%#ChandanIdiot()%>'></asp:Label>
</ul>
</ItemTemplate>
</asp:Repeater>
I have written RepeaterDays.Databind(), but the function is not called.
This is displaying nothing.

Is ChandanIdiot() a protected function that returns a string?
protected string ChandanIdiot() {
return "test";
}
If you want to actually do some data processing, you will have to include a parameter:
protected string ChandanIdiot(object obj) {
return "test " + obj;
}
And, assuming that there is a property called "Name" on the object that you are reapeating, you would have the following:
<asp:Label ID="lblDays" runat="server" Text='<%# ChandanIdiot(Eval("Name")) %>' />

Source:
<asp:TemplateField HeaderText="Unit Price">
<ItemTemplate>
<%# ChandanIdiot( Eval("product_unitprice"))%>
<!--product_unitprice is table colomn name -->
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox4" runat="server" ></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
C#:
protected string ChandanIdiot(object ob) {
string typ = ob.ToString(); //selected value stored in ob
if (typ == "some function") {
//do somthing
}
return typ ; //value return to <%# ChandanIdiot( Eval("product_unitprice"))%>
}

Related

Using Methods in Serverside ControlIDs

i got the following code on my ASP-Site
<asp:Repeater runat="server" ID="repFoo">
<ItemTemplate>
<asp:Button runat="server" ID="btnfoo" Visible='<%#!String.IsNullOrEmpty("FOOValue")%>' />
</ItemTemplate>
</asp:Repeater>
how is the correct syntax for the String.IsNullOrEmpty method?
create a c# method--->
public string CheckIfNull(object myValue)
{
if (myValue == null)
{
return "0 value";
}
return myValue.ToString();
}
.aspx--->
... Visible = <%# CheckIfNull(Eval("FOOValue")) %> ...
there are 2 ways :
declare function in your cs file that get the value and make your checks on it:
<asp:Button runat="server" ID="btnfoo" Visible='<%# CheckNull(Eval("FOOValue")) %>' />
public bool CheckNull(object value)
{
return string.IsNullOrEmpty(value) ? fale : true;
}
OR use the function IsNullOrEmpty inline :
<asp:Button runat="server" ID="btnfoo" Visible='<%# String.IsNullOrEmpty(Eval("FOOValue").ToString()) ? false : true %>' />

How to call a code-behind method from aspx page?

I've an object that contains a field called DevList which is defined like this
public List<string> DevList { get; set; }
I also defined a method called DisplayListOfDevelopers that is supposed to concatenate the list of developers and display it as a one string.
This is how I'm calling the method from aspx.
<asp:TemplateField HeaderText = "Developer(s)">
<ItemTemplate>
<asp:Label
ID="_lblDevList"
runat="server"
Text= '<%# DisplayListOfDevelopers(DevList) %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
But, I'm getting this error: The name 'DevList' does not exist in the current context
Am I missing something?
EDIT
_gvStatus = ds;
_gvStatus.DataBind();
Where ds is just a list of objects that contains the DevList for now.
Thanks for helping
Assuming this is how your class looks:
public class MyItem
{
public List<string> DevList { get; set; }
}
And that
ds = List<MyItem>();
Do this:
In your code-behind:
protected string DisplayListOfDevelopers(object _devList)
{
//Cast your dev list into the correct object
}
In your markup:
<asp:TemplateField HeaderText="Developer(s)">
<ItemTemplate>
<asp:Label
ID="_lblDevList"
runat="server"
Text='<%# DisplayListOfDevelopers(Eval("DevList")) %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
Just be sure to make the function in your code-behind is protected or public.

populate lable control inside a gridview based on inline Conditional statement

I am trying to display a plain text in the column(contains a label) of gridview based on a condition. Here is my erroneous code. Please correct.
<asp:Label ID="lblAsgn" runat="server" Text= '<%#Eval("StatusId") == 0 ? "NEW" : "OLD" %>' > </asp:Label>
Thanks in advance.
BB
<asp:Label
ID="lblAsgn"
runat="server"
Text='<%# FormatText(Eval("StatusId")) %>' />
where FormatText could be a method in your code behind:
protected string FormatText(object o)
{
int value;
if (int.Parse(o as string, out value) && value == 0)
{
return "NEW";
}
return "OLD";
}
Try this :
<asp:Label ID="lblAsgn" runat="server" Text= '<%# Eval("StatusId").Equals(0) ? "NEW" : "OLD" %>' > </asp:Label>

How to Bind complex data to control in ListView (class User contain instance of class UserType)

I have 2 value class
public class UserType
{
public int ID;
public string TypeName;
}
public class User
{
public int ID;
public string UserName;
public UserType Type;
}
1 proccessing class
public class Users
{
public User[] GetUsers()
{
//Retrive and re turn User array
}
public int Update(User user, User old_user)
{
//Update user
}
}
1 ListView and 1 ObjectDataSource
<asp:ListView ID="lsvUser" runat="server" DataKeyNames="ID" DataSourceID="odsUser"
ItemPlaceholderID="plhItem" onitemupdating="lsvUser_ItemUpdating">
<LayoutTemplate>
<ul><asp:PlaceHolder ID="plhItem" runat="server"></asp:PlaceHolder></ul>
</LayoutTemplate>
<ItemTemplate>
<li>
<asp:Label ID="lblID" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
<asp:Label ID="lblUserName" runat="server" Text='<%# Eval("UserName") %>'></asp:Label>
<asp:Label ID="lblTypeName" runat="server" Text='<%# Eval("Type.TypeName") %>'></asp:Label>
<asp:LinkButton ID="btEdit" runat="server" CssClass="button" CommandName="Edit" Text="Edit"></asp:LinkButton>
</li>
</ItemTemplate>
<EditItemTemplate>
<li class="editRow">
<asp:Textbox ID="txbUserName" runat="server" Text='<%# Bind("UserName") %>'></asp:Textbox >
<asp:Textbox ID="txbTypeName" runat="server" Text='<%# Bind("Type.TypeName") %>'></asp:Textbox >
</li>
</EditItemTemplate>
</asp:ListView>
<asp:ObjectDataSource ID="odsUser" runat="server" TypeName="BLL.Users" DataObjectTypeName="BLL.User" SelectMethod="GetUsers" UpdateMethod="Update" ConflictDetection="CompareAllValues" OldValuesParameterFormatString="old_{0}"></asp:ObjectDataSource>
When data is loaded into the ItemTemplate, the ListView interprets Type.TypeName and binds correctly,
but when updating the record, I cannot retrieve the old_user.Type from the old values. So old_user.Name and old_user.ID have values but old_user.Type is null.
Help me. I have been searching for about 2 days and cannot find a solution. I can bind data for a new user like this:
protected void lsvUser_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
e.NewValues.Add("Type", new BLL.UserType() { TypeName = Convert.ToString(((TextBox)lsvUser.EditItem.FindControl("txbTypeName")).Text) });
}
But I don't know how to retrieve the old values (how to retrive value of lblTypeName).
Help me. If there is a solution that doesn't require additional code in the ItemUpdating event, please teach me.
Thank you.
Add Type.TypeName as a DataKey, like this:
<asp:ListView ID="ListView1" runat="server" DataKeyNames="Type.TypeName">
And in your ItemUpdating event handler, retrieve the key value like this:
string typeName = (string)e.Keys["Type.TypeName"];
I'm not positive that "Type.TypeName will work, but some variation of that should work, whether it's Type.TypeName or just TypeName.

gridview dynamic image change in imagebutton

I have a gridview containing some data from db, and after a check I want to see a small cross/tick image in each row, due to the result of the check.How can I change the image url dynamically?
You could either use inline statement like
<%#Eval("check").ToString() == "1" ? "images/checked.gif" : "images/unchceked.gif")%>
or use a function to get the result as follows:
<%# getImageUrl(Eval("value")) %>
Public Function getImageUrl(ByVal value As Integer) As String
If value = 0 Then
Return "images/unchceked.gif"
Else
Return "mages/checked.gif"
End If
End Function
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="check" runat="server" ImageUrl='<%#If(Eval("check") = 1,"images/checked.gif","images/unchceked.gif") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
in form:
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="check" runat="server" ImageUrl='<%# GetImageUrl(Eval("Check")) %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
code-behind:
public string GetImageUrl(object checkObject)
{
if (checkObject!= null)
{
bool check;
bool parsable = bool.Parse(checkObject.ToString(), out check);
check= parsable ? check : false;
return check ? "~/Media/Images/tick.png" : "~/Media/Images/untick.png";
}
return "~/Media/Images/none.png";
}

Resources