[ASP.NET]Repeaterの使い方
7338 ワード
ASP.NETコントロール第三編----REPEter
まずはHTMLコード
コントロールにデータをバインドする方法Text=''
C#的代码,第一次加载页面的时候绑定数据
Repeaterのすべてのコントロール操作は
OnItemCommandで、コントロールに追加
CommandNameプロパティ
名前をカスタマイズして、OnItemCommandで対応する操作を実行します.
この例では、Repeaterでは、2つのLinkButtonがそれぞれ新規および削除の操作を実行します.
対応するCommandNameはそれぞれNewとDelete
OnItemCommandのC#コードは次の通りです.
Repeaterデータの取得方法
まずはHTMLコード
コントロールにデータをバインドする方法Text=''
--%>
C#的代码,第一次加载页面的时候绑定数据
protected void Page_Load(object sender, EventArgs e)
{
// , (!IsPostBack), PostBack
if (!IsPostBack)
{
InitData();
DataBinds();
}
}
protected void InitData()// DataTable
{
try
{
DataTable dt = new DataTable();
dt.Columns.Add("StudentID", typeof(string));
dt.Columns.Add("StudentName", typeof(string));
dt.Columns.Add("StudentNo", typeof(string));
for (int i = 0; i < 1; i++)
{
DataRow dr = dt.NewRow();
dr["StudentID"] = "";
dr["StudentName"] = "";
dr["StudentNo"] = "";
dt.Rows.Add(dr);
}
ViewState.Add("Data", dt);
}
catch (Exception ex)
{
throw ex;
}
}
protected void DataBinds()//
{
rpStudent.DataSource = ViewState["Data"] as DataTable;
rpStudent.DataBind();
}
Repeaterのすべてのコントロール操作は
OnItemCommandで、コントロールに追加
CommandNameプロパティ
名前をカスタマイズして、OnItemCommandで対応する操作を実行します.
この例では、Repeaterでは、2つのLinkButtonがそれぞれ新規および削除の操作を実行します.
対応するCommandNameはそれぞれNewとDelete
OnItemCommandのC#コードは次の通りです.
protected void rpStudento_ItemCommand(object source, RepeaterCommandEventArgs e)
{
try
{
if (e.CommandName == "Delete")//
{
string ls_StudentID = (e.Item.FindControl("hidStudentID") as HiddenField).Value;
// Item , ,
if (rpStudent.Items.Count > 1)
{
DataTable dt = CopyFormData();//
dt.Rows.RemoveAt(e.Item.ItemIndex);// Item
ViewState.Add("Data", dt);
DataBinds();//
}
//Item 1,
else
{
DataTable dt = CopyFormData();//
dt.Rows.RemoveAt(e.Item.ItemIndex);// Item
DataRow dr = dt.NewRow();//
dt.Rows.Add(dr);
ViewState.Add("Data", dt);
DataBinds();//
}
}
}
catch (Exception ex)
{
throw ex;
}
try
{
if (e.CommandName == "New")//
{
DataTable dt = CopyFormData();//
DataRow dr = dt.NewRow();//
dt.Rows.Add(dr);// Datatable
ViewState.Add("Data", dt);
DataBinds();//
}
}
catch (Exception ex)
{
throw ex;
}
}
protected DataTable CopyFormData()//
{
DataTable dt = (ViewState["Data"] as DataTable).Clone();
try
{
foreach (RepeaterItem ri in rpStudent.Items)
{
DataRow dr = dt.NewRow();
dr["StudentID"] = (ri.FindControl("hidStudentID") as HiddenField).Value;
dr["StudentName"] = (ri.FindControl("tbStudentName") as TextBox).Text;
dr["StudentNo"] = (ri.FindControl("tbStudentNo") as TextBox).Text;
dt.Rows.Add(dr);
}
}
catch (Exception ex)
{
throw ex;
}
return dt;
}
Repeaterデータの取得方法
protected void btnSaveCustInfo_Click(object sender, EventArgs e)
{
try
{
List list = new List();
list.Clear();
for (int i = 0; i < rpStudent.Items.Count; i++)
{
string ls_StudentName = (rpStudent.Items[i].FindControl("tbStudentName") as TextBox).Text;
string ls_StudentNo = (rpStudent.Items[i].FindControl("tbStudentNo") as TextBox).Text;
string ls_StudentID = (rpStudent.Items[i].FindControl("hidStudentID") as HiddenField).Value;
string info = ls_StudentName + "," + ls_StudentNo + "," + ls_StudentID;
string[] info_Array = info.Split(',');
list.Add(info_Array);
}
}
catch (Exception ex)
{
throw ex;
}
}