ObjectList list view shows empty data when postback and rendering using item template

B

b301

Hi,

I have mobile form with objectlist.
I am using device specific rendering for ishtml32 devices using
templates.

It displays object list first time (when not postback) correct. When I
click on item, i am using default rendering for

itemdetail. Item detail shows fine.
Now when user clicks back link (default back button on item detail),
it comes back to objectlist list view,
but shows empty data in columns (item template/alt item template).

It works fine on device other than "ishml32", because it does not use
template rendering.
I am sure I am not the one who is going through this.

I would appreciate any help/suggestion.

Here is the test mobile form ObjectListWithTemplate.aspx I created


<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="ObjectListWithTemplate.aspx.cs"
Inherits="mobile_ObjectListWithTemplate" %>
<%@ Import namespace="System.Web.UI.MobileControls"%>
<%@ Import namespace="System.ComponentModel"%>

<%@ Register TagPrefix="mobile"
Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile"
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<mobile:Form ID="Form1" Runat="server">
<mobile:ObjectList ID="ObjectList1" Runat="server"
CommandStyle-StyleReference="subcommand"
LabelStyle-StyleReference="title"
OnItemCommand="ObjectList1_ItemCommand">
<DeviceSpecific>
<Choice Filter="isHTML32">
<HeaderTemplate>
<table>
<tr>
<td>
Action
</td>
<td>
Col1Heading
</td>
<td>
Col2Heading
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr >
<td>
<mobile:Command ID="cmd1"
CommandName="View" Runat="server">Detail</mobile:Command>
</td>
<td>
<%#
DataBinder.Eval((ObjectListItem)Container, "DataItem.col1")%>
</td>
<td>
<%#
DataBinder.Eval((ObjectListItem)Container, "DataItem.col2")%>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr >
<td>
<mobile:Command ID="cmd1"
CommandName="View" Runat="server">Detail</mobile:Command>
</td>
<td>
<%#
DataBinder.Eval((ObjectListItem)Container, "DataItem.col1")%>
</td>
<td>
<%#
DataBinder.Eval((ObjectListItem)Container, "DataItem.col2")%>
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</Choice>
</DeviceSpecific>
</mobile:ObjectList>
</mobile:Form>
</body>
</html>

Code behind:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.Mobile;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.MobileControls;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

public partial class mobile_ObjectListWithTemplate :
System.Web.UI.MobileControls.MobilePage
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
ObjectList1.DataSource = getDataTable();
ObjectList1.DataBind();
ObjectList1.DataMember = "col1";
}
}
private DataTable getDataTable()
{
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("col1");
DataColumn dc1 = new DataColumn("col2");
DataColumn dc2 = new DataColumn("col3");
DataColumn dc3 = new DataColumn("col4");
dt.Columns.Add(dc);
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
DataRow dr = dt.NewRow();
dr["col1"] = "test1";
dr["col2"] = "mobile";
dr["col3"] = "Street 1";
dr["col4"] = "City1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["col1"] = "Test2";
dr["col2"] = "aspnet";
dr["col3"] = "ghshxxx";
dr["col4"] = "City2";
dt.Rows.Add(dr);
return dt;
}
protected void ObjectList1_ItemCommand(object sender,
ObjectListCommandEventArgs e)
{
if(e.CommandName == "View")
{
ObjectList1.SelectedIndex = e.ListItem.Index;
ObjectList1.ViewMode = ObjectListViewMode.Details;
}
}
}


Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top