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で現在のローを検索する方法は、次のとおりです.
 
    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());
        }
    }