您的位置:首页 > 其它

Repeter实现增,删,改,以及分页和排序

2009-08-17 20:56 495 查看
前台代码:


<form id="form1" runat="server">


<div>


<asp:Panel ID="Panel1" runat="server" Height="50px" Visible="False" Width="1029px">


<asp:Label ID="lblCompanyName" runat="server" Text="CompanyName" Visible="False"></asp:Label>


<asp:TextBox ID="txtCompanyName" runat="server" Visible="False"></asp:TextBox>


<asp:Label ID="lblName" runat="server" Text="ContactName" Visible="False"></asp:Label>


<asp:TextBox ID="txtContactName" runat="server" Visible="False"></asp:TextBox>


<asp:Label ID="lblAddress" runat="server" Text="Address" Visible="False"></asp:Label>


<asp:TextBox ID="txtAddress" runat="server" Visible="False"></asp:TextBox>


<asp:Label ID="lblCity" runat="server" Text="City" Visible="False"></asp:Label>


<asp:TextBox ID="txtCity" runat="server" Visible="False" Width="129px"></asp:TextBox>


<asp:Button ID="btnUpdate" runat="server" Text="更新" CommandName="Update" OnClick="btnUpdate_Click" />


<asp:Button ID="btnInsert" runat="server" Text="新增" OnClick="btnInsert_Click" />


<asp:Button ID="Button1" runat="server" Text="取消" CommandName="Cancel" OnClick="Button1_Click" />


</asp:Panel>


<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand"


OnItemDataBound="Repeater1_ItemDataBound">


<HeaderTemplate>


<table border="0" width="100%">


<tr>


<th align="left">


SupplierID</th>


<th align="left">


CompanyName</th>


<th align="left">


ContactName</th>


<th align="left">


Address</th>


<th align="left">


City</th>


<th>


</th>


<th>


</th>


<th>


</th>


</tr>


</HeaderTemplate>


<ItemTemplate>


<tr id="Item" runat="server">


<td>


<asp:Label ID="lblID" runat="server" Text='<%#Eval("SupplierID") %>'></asp:Label>


</td>


<td>


<asp:Label ID="lblCompanyName" runat="server" Text='<%#Eval("CompanyName") %>'></asp:Label>


</td>


<td>


<asp:Label ID="lblName" runat="server" Text=' <%#Eval("ContactName") %>'></asp:Label>


</td>


<td>


<asp:Label ID="lblAddress" runat="server" Text='<%#Eval("Address") %>'></asp:Label>


</td>


<td>


<asp:Label ID="lblCity" runat="server" Text='<%#Eval("City") %>'></asp:Label>


</td>


<td>


<asp:Button ID="Edit" runat="server" Text="编辑" CommandName="Edit" /></td>


<td>


<asp:Button ID="Delete" runat="server" Text="删除" CommandName="Delete" /></td>


<td>


<asp:Button ID="New" runat="server" Text="新增" CommandName="New" /></td>


</tr>


</ItemTemplate>


<AlternatingItemTemplate>


<tr bgcolor="#e8e8e8" id="Alter" runat="server">


<td>


<asp:Label ID="lblID" runat="server" Text='<%#Eval("SupplierID") %>'></asp:Label>


</td>


<td>


<asp:Label ID="lblCompanyName" runat="server" Text='<%#Eval("CompanyName") %>'></asp:Label>


</td>


<td>


<asp:Label ID="lblName" runat="server" Text=' <%#Eval("ContactName") %>'></asp:Label>


</td>


<td>


<asp:Label ID="lblAddress" runat="server" Text='<%#Eval("Address") %>'></asp:Label>


</td>


<td>


<asp:Label ID="lblCity" runat="server" Text='<%#Eval("City") %>'></asp:Label>


</td>


<td>


<asp:Button ID="Edit" runat="server" Text="编辑" CommandName="Edit" /></td>


<td>


<asp:Button ID="Delete" runat="server" Text="删除" CommandName="Delete" /></td>


<td>


<asp:Button ID="New" runat="server" Text="新增" CommandName="New" /></td>


</tr>


</AlternatingItemTemplate>


<FooterTemplate>


</table>


</FooterTemplate>


</asp:Repeater>


<asp:Label ID="lblPage" runat="server"></asp:Label>


<asp:Label ID="lblCount" runat="server"></asp:Label>


<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="上一页" />


<asp:Button ID="btnPage" runat="server" OnClick="btnPage_Click" Text="下一页" />


<asp:Button ID="btnSort" runat="server" Text="排序" OnClick="btnSort_Click" /></div>


</form>

后台代码:


string ConStr = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;


SqlConnection Con;




protected void Page_Load(object sender, EventArgs e)




...{


if (!IsPostBack)




...{


//设置默认的排序顺序


ViewState["CompanyName"] = "SupplierID";


ViewState["Direction"] = "ASC";


ViewState["LineNo"] = 0;


//初始化的时候默认显示第一页


lblCount.Text = "1";


BindRepeter();


}


}




//判断命令


protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)




...{


String Index = ((Label)Repeater1.Items[e.Item.ItemIndex].FindControl("lblID")).Text;


Session["ID"] = Index;


//编辑模式


if (e.CommandName == "Edit")




...{


string CompanyName = ((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblCompanyName"))).Text;


string Name = ((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblName"))).Text;


string Address = ((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblAddress"))).Text;


string City = ((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblCity"))).Text;


txtCompanyName.Text = CompanyName;


txtContactName.Text = Name;


txtAddress.Text = Address;


txtCity.Text = City;


if (Panel1.Visible == false)




...{


ShowMessage("进入编辑模式");




}


SetDisplayTrue();


btnInsert.Visible = false;


btnUpdate.Visible = true;


Button1.Visible = true;


}


//删除


else if (e.CommandName == "Delete")




...{


if (Panel1.Visible == true)




...{


ShowMessage("编辑模式下禁止删除");


}


else




...{


SetDisplayFalse();


string DeleteStr = "DELETE FROM Suppliers WHERE SupplierID='" + Index + "'";


Con = new SqlConnection(ConStr);


SqlCommand DeleteCmd = new SqlCommand(DeleteStr,Con);


try




...{


Con.Open();


DeleteCmd.ExecuteNonQuery();


ShowMessage("删除成功");


BindRepeter();


}


catch (Exception ex)




...{


ShowMessage("删除有错误,请检查");


}


finally




...{


Con.Dispose();


}




}


}//新增


else if (e.CommandName == "New")




...{


if (Panel1.Visible == true)




...{


ShowMessage("编辑模式下禁止添加新行");


}


else




...{


SetDisplayTrue();


ClearWord();


btnInsert.Visible = true;


btnUpdate.Visible = false;


Button1.Visible = true;


}




}


}




//绑定Repeter


private void BindRepeter()




...{


string QueryCon = "SELECT SupplierID,CompanyName,ContactName,Address,City FROM Suppliers";


Con = new SqlConnection(ConStr);


SqlDataAdapter NorthWindDa = new SqlDataAdapter(QueryCon, ConStr);


DataSet Ds = new DataSet();


NorthWindDa.Fill(Ds, "Suppliers");


//Repeater1.DataKeyNames = new string[] { "SupplierID" };


DataView Dv = Ds.Tables["Suppliers"].DefaultView;


//排序表达式


string SortExpress = (string)ViewState["CompanyName"] + " " + (string)ViewState["Direction"];


Dv.Sort = SortExpress;


//绑定数据源


//Repeater1.DataSource = Ds.Tables["Suppliers"];


//利用PagedDataSource进行分页


PagedDataSource PageDs = new PagedDataSource();


PageDs.DataSource = Dv;


PageDs.AllowPaging = true;


PageDs.PageSize = 10;


int CurrentPage = Convert.ToInt32(lblCount.Text);


//当前页


PageDs.CurrentPageIndex = CurrentPage-1;


btnPage.Enabled = true;


Button2.Enabled = true;


if (CurrentPage == 1)




...{


Button2.Enabled = false;


}


if (CurrentPage == PageDs.PageCount)




...{


btnPage.Enabled = false;


}


//PageCount = PageDs.PageCount;


lblPage.Text = "共" + PageDs.PageCount + "页,当前在第";


//将PageDs作为数据源进行绑定


Repeater1.DataSource = PageDs;


Repeater1.DataBind();




}




//显示编辑区域


private void SetDisplayTrue()




...{


lblCompanyName.Visible = true;


lblName.Visible = true;


lblAddress.Visible = true;


lblCity.Visible = true;


txtCompanyName.Visible = true;


txtContactName.Visible = true;


txtAddress.Visible = true;


txtCity.Visible = true;


Panel1.Visible = true;


}




//隐藏编辑区域


private void SetDisplayFalse()




...{


lblCompanyName.Visible = false;


lblName.Visible = false;


lblAddress.Visible = false;


lblCity.Visible = false;


txtCompanyName.Visible = false;


txtContactName.Visible = false;


txtAddress.Visible = false;


txtCity.Visible = false;


Panel1.Visible = false;


}




private void ClearWord()




...{


txtCompanyName.Text = "";


txtContactName.Text = "";


txtAddress.Text = "";


txtCity.Text = "";


}


//封装javascript


private void ShowMessage(string Message)




...{


Literal TxtMsg = new Literal();


TxtMsg.Text = "<script>alert('"+Message+"')</script>";


Page.Controls.Add(TxtMsg);


}






//更新数据


protected void btnUpdate_Click(object sender, EventArgs e)




...{




/**//*在有数据输入的时候应该检查输入数据的合法性,


* 过滤掉特殊的脚本,特殊的字符串,提高安全性


*/


string CompanyName = Server.HtmlEncode(txtCompanyName.Text.ToString());


string ContactName = Server.HtmlEncode(txtContactName.Text.ToString());


string Address = Server.HtmlEncode(txtAddress.Text.ToString());


string City = Server.HtmlEncode(txtCity.Text.ToString());


string UpdateStr = "UPDATE Suppliers SET CompanyName='" + CompanyName + "',ContactName='" + ContactName + "'," +


"Address='" + Address + "',City='" + City + "' WHERE SupplierID='" + Session["ID"] + "' ";


Con = new SqlConnection(ConStr);


SqlCommand UpdateCmd = new SqlCommand(UpdateStr,Con);


try




...{


Con.Open();


UpdateCmd.ExecuteNonQuery();


ShowMessage("更新成功");


SetDisplayFalse();


BindRepeter();


}


catch (Exception ex)




...{


ShowMessage("更新出错,请重新输入");


}


finally




...{


Con.Dispose();


}


}






protected void Button1_Click(object sender, EventArgs e)




...{


SetDisplayFalse();


}




//插入一行新数据


protected void btnInsert_Click(object sender, EventArgs e)




...{


string CompanyName = Server.HtmlEncode(txtCompanyName.Text.ToString());


string ContactName = Server.HtmlEncode(txtContactName.Text.ToString());


string Address = Server.HtmlEncode(txtAddress.Text.ToString());


string City = Server.HtmlEncode(txtCity.Text.ToString());


string InsertStr = "INSERT INTO Suppliers (CompanyName,ContactName,Address,City) VALUES('" + CompanyName + "','" + ContactName + "','" + Address + "','" + City + "')";


Con = new SqlConnection(ConStr);


SqlCommand InsertCmd = new SqlCommand(InsertStr, Con);


try




...{


Con.Open();


InsertCmd.ExecuteNonQuery();


ShowMessage("插入成功");


SetDisplayFalse();


BindRepeter();


}


catch (Exception ex)




...{


ShowMessage("插入失败,请重新检查");


}


finally




...{


Con.Dispose();


}


}






//给删除按钮添加客户端的Confirm对话框


protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)




...{




if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)




...{


((Button)Repeater1.Controls[Repeater1.Controls.Count-1].FindControl("Delete")).Attributes["onclick"] = "if(!confirm('你真的要删除这条记录么?'))return false;";


}




}






//下一页


protected void btnPage_Click(object sender, EventArgs e)




...{


//更改pageds的当前页数


lblCount.Text = Convert.ToString(Convert.ToInt32(lblCount.Text) + 1);


BindRepeter();


}




//上一页


protected void Button2_Click(object sender, EventArgs e)




...{


//更改当前页


lblCount.Text = Convert.ToString(Convert.ToInt32(lblCount.Text)-1);


BindRepeter();


}




//排序


protected void btnSort_Click(object sender, EventArgs e)




...{


//判断排序表达式的顺序


if (ViewState["Direction"].ToString() == "DESC")




...{


ViewState["Direction"] = "ASC";


}


else




...{


ViewState["Direction"] = "DESC";


}




/**//*设置完排序的顺序以后,将排序后的dataview


*绑定到repeter上。这个方法,目前有个缺陷,


* 每次排序的时候都是将整个数据源进行排序,


* 并不是对当前的分页进行排序。


*/


BindRepeter();


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐