hello ..
I have listview in that had set paging ...but am unable do edit the record in that paging...
am sharing code..any help appreciated..
Source::
CustomerId
Name
Country
onitemupdating="ListView1_ItemUpdating" onitemdeleting="ListView1_ItemDeleting" ItemPlaceholderID="itemplaceholder" GroupPlaceholderID="groupplaceholder" OnPagePropertiesChanging="OnPagePropertiesChanging">
<%-- This part used for paging --%>
ShowNextPageButton="false" />
ShowPreviousPageButton="false" />
<%-- end --%>
Code::
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dt.Columns.Add("CustomerId");
dt.Columns.Add("Name");
dt.Columns.Add("Country");
dt.Columns.Add("Status");
ViewState["Details"] = dt;
ListView1.DataSource = dt;
ListView1.DataBind();
txtCustomerId.Text = (dt.Rows.Count + 1).ToString();
txtName.Focus();
}
}
protected void OnPagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
(ListView1.FindControl("DataPager1") as DataPager).SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
DataTable dt = new DataTable();
dt = (DataTable)ViewState["Details"];
DataRow dr = dt.NewRow();
dr["CustomerId"] = (dt.Rows.Count + 1).ToString();
dr["Name"] = txtName.Text;
dr["Country"] = txtCountry.Text;
dr["Status"] = "Saved";
DataPager DataPager1 = ((DataPager)ListView1.Items[e.StartRowIndex].FindControl("DataPager1"));
int PageCount = (DataPager1.TotalRowCount * DataPager1.PageSize);
if (PageCount * DataPager1.PageSize != DataPager1.TotalRowCount)
{
PageCount = PageCount + 1;
}
//for (int i = 0; i < PageCount; i++)
//{
//}
//ddl.Items.FindByValue(CurrentPage.ToString()).Selected = true;
ListView1.DataSource = dt;
ListView1.DataBind();
}
protected void btnadd_Click(object sender, EventArgs e)
{
bool IsRecordExist = false;
DataTable dt = new DataTable();
dt = (DataTable)ViewState["Details"];
DataRow dr = dt.NewRow();
IsRecordExist = CheckRecorExist();
if (IsRecordExist == false)
{
dr["CustomerId"] = (dt.Rows.Count + 1).ToString();
dr["Name"] = txtName.Text;
dr["Country"] = txtCountry.Text;
dr["Status"] = "Saved";
dt.Rows.Add(dr);
ViewState["Details"] = ListView1.DataSource = dt;
ListView1.DataBind();
RefreshHeader();
}
else
{
dt = (DataTable)ViewState["Details"];
DataRow drUpdate = dt.Select("CustomerId=" + txtCustomerId.Text).FirstOrDefault();
drUpdate["Name"] = txtName.Text;
drUpdate["Country"] = txtCountry.Text;
drUpdate["Status"] = ((Label)ListView1.Items[0].FindControl("lblstatus")).Text = "Modified";
dr["Status"] = "Modified";
ViewState["Details"] = ListView1.DataSource = dt;
ListView1.DataBind();
RefreshHeader();
}
}
private bool CheckRecorExist()
{
bool IsExistRecord = false;
foreach (ListViewItem item in ListView1.Items)
{
if (((Label)ListView1.Items[item.DataItemIndex].FindControl("lblcustomerid")).Text == txtName.Text)
{
IsExistRecord = true;
break;
}
}
return IsExistRecord;
}
private void RefreshHeader()
{
DataTable dt = new DataTable();
dt = (DataTable)ViewState["Details"];
int Row = dt.Rows.Count + 1;
txtCustomerId.Text = Row.ToString();
txtName.Text = "";
txtCountry.Text = "";
txtName.Focus();
}
protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
{
ListView1.EditIndex = e.NewEditIndex;
DataTable dt = (DataTable)ViewState["Details"];
string EditNo = ((Label)ListView1.Items[e.NewEditIndex].FindControl("lblCustomerId")).Text;
((Label)ListView1.Items[e.NewEditIndex].FindControl("lblstatus")).Text = "Saved";
DataRow dr = dt.Select("CustomerId=" + EditNo).FirstOrDefault();
dr["Status"] = ((Label)ListView1.Items[0].FindControl("lblstatus")).Text;
dr["Status"] = "Saved";
ViewState["Details"] = ListView1.DataSource = dt;
txtCustomerId.Text = ((Label)ListView1.Items[e.NewEditIndex].FindControl("lblcustomerid")).Text;
txtName.Text = ((Label)ListView1.Items[e.NewEditIndex].FindControl("lblname")).Text;
txtCountry.Text = ((Label)ListView1.Items[e.NewEditIndex].FindControl("lblcountry")).Text;
txtName.Focus();
}
protected void ListView1_ItemCanceling(object sender, ListViewCancelEventArgs e)
{
ListView1.EditIndex = -1;
DataTable dt = (DataTable)ViewState["Details"];
ViewState["Details"] = dt;
ListView1.DataSource = dt;
ListView1.DataBind();
}
protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
TextBox txtCustomerId = ((TextBox)ListView1.Items[e.ItemIndex].FindControl("txtCustomerId"));
TextBox txtName = ((TextBox)ListView1.Items[e.ItemIndex].FindControl("txtName"));
TextBox txtCountry = ((TextBox)ListView1.Items[e.ItemIndex].FindControl("txtCountry"));
ListView1.EditIndex = -1;
DataTable dt = (DataTable)ViewState["Details"];
ViewState["Details"] = dt;
ListView1.DataSource = dt;
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[e.ItemIndex]["CustomerId"] = txtCustomerId.Text;
dt.Rows[e.ItemIndex]["Name"] = txtName.Text;
dt.Rows[e.ItemIndex]["Country"] = txtCountry.Text;
}
ListView1.DataBind();
}
protected void ListView1_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
string cusid = ((Label)ListView1.Items[e.ItemIndex].FindControl("lblcustomerid")).Text;
((Label)ListView1.Items[e.ItemIndex].FindControl("lblstatus")).Text = "Deleted";
DataTable dt = (DataTable)ViewState["Details"];
DataRow dr = dt.Select("CustomerId=" + cusid).FirstOrDefault();
dr["Status"] = ((Label)ListView1.Items[e.ItemIndex].FindControl("lblstatus")).Text;
dr["Status"] = "Deleted";
ViewState["Details"] = ListView1.DataSource = dt;
ListView1.DataBind();
RefreshHeader();
txtName.Focus();
}
protected void btncan_Click(object sender, EventArgs e)
{
txtName.Text = "";
txtCountry.Text = "";
}
protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
DataTable dt = (DataTable)ViewState["Details"];
DataRow dr = ((System.Data.DataRowView)e.Item.DataItem).Row;
switch (dr["Status"].ToString())
{
case "Deleted":
{
btnadd.Visible = true;
btncan.Visible = true;
((Button)e.Item.FindControl("btnedit")).Visible = false;
((Button)e.Item.FindControl("btndelete")).Visible = false;
((Label)e.Item.FindControl("lblcustomerid")).BackColor = Color.Red;
((Label)e.Item.FindControl("lblname")).BackColor = Color.Red;
((Label)e.Item.FindControl("lblcountry")).BackColor = Color.Red;
break;
}
case "Saved":
{
btnadd.Visible = true;
btncan.Visible = true;
((Button)e.Item.FindControl("btnedit")).Visible = true;
((Button)e.Item.FindControl("btndelete")).Visible = true;
break;
}
case "Modified":
{
//e.Item.DataItem = Color.Empty;
btnadd.Visible = true;
btncan.Visible = true;
((Button)e.Item.FindControl("btnedit")).Visible = true;
((Button)e.Item.FindControl("btndelete")).Visible = true;
break;
}
default:
{
break;
}
}
}
}
protected void txtName_TextChanged(object sender, EventArgs e)
{
int x = 0;
DataTable dt = (DataTable)ViewState["Details"];
ViewState["Details"] = dt;
for (int i = 0; i < dt.Rows.Count; i++)
{
if ((txtName.Text == dt.Rows[i]["Name"].ToString() && dt.Rows[i]["Country"].ToString() != i + 1.ToString()))
{
x = 1;
}
if (x == 1)
{
ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Name Already Exists');", true);
txtName.Text = string.Empty;
}
else
{
}
}
}
here am facing if i edit the recordit is showing index error..must be non negative...page size is 3...so in second page if i edit it is showing index error...any help please..
1 Reply
Know the answer? Post it — somebody with the same question will find it here.
Sign in to answer this question
It is the same account you read, post and publish with — and you will come straight back to this page.
Mukesh KumarPosted Oct 12, 2015, 2:22 AM