asp.Net ReaperとGridViewにシーケンス番号を追加
9647 ワード
repeaterシーケンス番号列を追加する方法1、<%#Container.ItemIndex + 1%> 2、 <%# this.rpResult.Items.Count+1%> 3、に function show() { var bj = document.all.tags("LABEL"); for (i=0;i4、バックグラウンド実装方法:在.aspxに を追加する.csに**void InitializeComponent(){this.Repeater 1.ItemDataBound+=new System.Web.UI.WebControl.RepeaterItemEventHandler(this.Repeater 1_ItemDataBound);this.Load+=new System.EventHandler(this.Page_Load); } ** void Repeater1_ItemDataBound(object source, System.Web.UI.WebControls.RepeaterItemEventArgs e) { if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { ((Label)e.Item.FindControl("Label1")).Text = Convert.ToString(e.Item.ItemIndex + 1); } } 5.条件に従ってhtml<%#Containerを追加する.ItemIndex == 8 ? "
": ""%>
ASP.NET repeaterシーケンス番号列の追加方法
1.第1の方式
AspxページGridViewテンプレート列に直接表示する.このような欠点は、2ページ目のページング時にまた再開されたことです.<%#Container.DataItemIndex+1%> 2.第2の方式
ページごとに計算すると、 3.第3の方法
csコードに入れると、2番目に似ている protected void GridView 1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex != -1) { int indexID = this.GridView1.PageIndex * this.myGridView.PageSize + e.Row.RowIndex + 1; e.Row.Cells[0].Text = indexID.ToString(); } }
4.バックグラウンド検索に追加しない
int rowIndex = ((GridViewRow)((Button)e.CommandSource).NamingContainer).RowIndex;TextBox tb = (TextBox)GridView1.Rows[i].FindControl("TextBox");e.CommandSourceは押していくButtonを伝えていますが、Objectが返ってくるので、自分でButtonを変換しなければなりませんが、私たちが知りたいのはRowIndexで、ButtonはGridViewRowに含まれているので、NamingContainerで現在のGridViewRowを返し、Controlを得るため、GridViewRowに移行してからRowIndex属性を持つ必要があります.原理は、現在のローインデックスとButtonのcommandargumentをバインドし、現在のローのインデックスを取り出すだけでgridviewのrowcommandイベントとdatalistのitemcommandイベントが似ていることです.
repeaterで現在のローを検索する方法は、次のとおりです.
ここではgridviewのあるセルで値を検索する問題について、この方法はたくさんありますが、特別な方法があります.フロントでTemplateFieldをバインドしていますが、中にはEvalを使っています.どうやって検索すればいいですか.答えはDataBoundLiteralControlです.この空間はこのセルタイプコントロールで、彼のText属性は私たちが検索する値です.フロントバインドコードとバックグラウンドの検索方法は次のとおりです.
フロントバインド
バックグラウンド取得
": ""%>
ASP.NET repeaterシーケンス番号列の追加方法
1.第1の方式
AspxページGridViewテンプレート列に直接表示する.このような欠点は、2ページ目のページング時にまた再開されたことです.
ページごとに計算すると、
csコードに入れると、2番目に似ている
4.バックグラウンド検索に追加しない
int rowIndex = ((GridViewRow)((Button)e.CommandSource).NamingContainer).RowIndex;TextBox tb = (TextBox)GridView1.Rows[i].FindControl("TextBox");e.CommandSourceは押していくButtonを伝えていますが、Objectが返ってくるので、自分でButtonを変換しなければなりませんが、私たちが知りたいのはRowIndexで、ButtonはGridViewRowに含まれているので、NamingContainerで現在のGridViewRowを返し、Controlを得るため、GridViewRowに移行してからRowIndex属性を持つ必要があります.原理は、現在のローインデックスとButtonのcommandargumentをバインドし、現在のローのインデックスを取り出すだけでgridviewのrowcommandイベントとdatalistのitemcommandイベントが似ていることです.
repeaterで現在のローを検索する方法は、次のとおりです.
protected void repQuestions_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Button butEdit = (Button)(e.Item.FindControl("butEdit"));
Button butDelete = (Button)(e.Item.FindControl("butDelete"));
Label labQuetionType = (Label)(e.Item.FindControl("labQeustionType"));
TextBox texSequence = (TextBox)(e.Item.FindControl("texSequence"));
int cursequence = Convert.ToInt32(butEdit.CommandArgument);
int id = Convert.ToInt32(butDelete.CommandArgument);
QuestionType questionType = questionnaireService.GetQuestionType(labQuetionType.Text);
if(e.CommandName == "Edit")
{
EditCurrentQuestion(id, cursequence);
hidQuestionSequence.Value = texSequence.Text.Trim();
}
else if(e.CommandName == "Delete")
{
int index = questionnaire.Questions.FindIndex(a => a.Sequence == cursequence);
this.questionnaire.Questions.RemoveAt(index);
}
BindQuestions();
}
}
ここではgridviewのあるセルで値を検索する問題について、この方法はたくさんありますが、特別な方法があります.フロントでTemplateFieldをバインドしていますが、中にはEvalを使っています.どうやって検索すればいいですか.答えはDataBoundLiteralControlです.この空間はこのセルタイプコントロールで、彼のText属性は私たちが検索する値です.フロントバインドコードとバックグラウンドの検索方法は次のとおりです.
フロントバインド
<asp:TemplateField HeaderText=" ">
<ItemTemplate>
<%#Eval("ReplyCount")%>
</ItemTemplate>
</asp:TemplateField>
バックグラウンド取得
protected void gvStatistic_RowCommand(object sender, GridViewCommandEventArgs e)
{
int id = Convert.ToInt32(((LinkButton)e.CommandSource).CommandArgument);
int rowIndex = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex;
if(e.CommandName == "check")
{
string replyCount = ((DataBoundLiteralControl)(gvStatistic.Rows[rowIndex].Cells[2].Controls[0])).Text.Trim();
if(!string.IsNullOrWhiteSpace(replyCount) && replyCount == "0")
{
AlertMessage.Show(this, " !");
}
else
{
Server.Transfer("StatisticsDetails.aspx?ID=" + id.ToString());
}
}