GridView Διαλογής λειτουργεί μόνο μία φορά

ψήφοι
2

Έχω ένα δίκτυο και είναι διαλογή μόνο μία φορά σε αύξουσα σειρά. Στη συνέχεια, δεν συμβαίνει τίποτα. Παρακαλώ βοηθήστε ASAP !!

Κώδικας αρχείο aspx:

<asp:GridView ID=gdvSignatureLines runat=server CssClass=Grid1 AutoGenerateColumns=False
                        SkinID=PagedGridView AllowPaging=True AllowSorting=True DataKeyNames=Id 
                        onrowcommand=gdvSignatureLines_RowCommand 
                        onrowdeleting=gdvSignatureLines_RowDeleting 
                        onrowediting=gdvSignatureLines_RowEditing 
                        onsorting=gdvSignatureLines_Sorting 
                        onpageindexchanging=gdvSignatureLines_PageIndexChanging>
                        <PagerStyle CssClass=gridPager HorizontalAlign=Right />
                        <Columns>
                            <ucc:commandfieldcontrol headertext=Actions showdeletebutton=true buttontype=Image
                                deleteimageurl=~/App_Themes/Default/images/delete.png showeditbutton=true
                                editimageurl=~/App_Themes/Default/images/edit.png deleteconfirmationtext=Are you sure you want to delete?>
                                    <ItemStyle HorizontalAlign=Center Width=60px />
                             </ucc:commandfieldcontrol>
                            <asp:BoundField DataField=SortOrder HeaderText=Line SortExpression=SortOrder />
                            <asp:TemplateField HeaderText=Type SortExpression=glTypeId>
                                <ItemTemplate>
                                    <asp:Label ID=lblglTypeId runat=server Text='<%# Eval(GeneralLookup.LookupItem) %>'></asp:Label>
                                </ItemTemplate>  
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText=Label SortExpression=glLabelId>
                                <ItemTemplate>
                                    <asp:Label ID=lblglLabelId runat=server Text='<%# Eval(GeneralLookup1.LookupItem) %>'></asp:Label>
                                </ItemTemplate>  
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText=Caption SortExpression=glCaptionId>
                                <ItemTemplate>
                                    <asp:Label ID=lblglCaptionId runat=server Text='<%# Eval(GeneralLookup2.LookupItem) %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                        <EmptyDataTemplate>
                            <div class=divEmptyListingGrid>
                                --- No Signature Line Exists ---
                            </div>
                        </EmptyDataTemplate>
                    </asp:GridView>

Κώδικας αρχείου cs:

protected void gdvSignatureLines_Sorting(object sender, GridViewSortEventArgs e)
    {
        lblHeading.Text = Signature Line for  + reportName;
        ReportOptionsBO reportOptionsBO = new ReportOptionsBO();
        List<ReportSignatureLine> listSignature = reportOptionsBO.GetReportSignatureLineByReportId(reportId);
        if (listSignature != null)
        {
            var param = Expression.Parameter(typeof(ReportSignatureLine), e.SortExpression);
            var sortExpression = Expression.Lambda<Func<ReportSignatureLine, object>>
                (Expression.Convert(Expression.Property(param, e.SortExpression), typeof(object)), param);

            if (e.SortDirection == SortDirection.Ascending)
            {
                gdvSignatureLines.DataSource = listSignature.AsQueryable<ReportSignatureLine>().OrderBy(sortExpression).ToList();
            }
            else
            {
                gdvSignatureLines.DataSource = listSignature.AsQueryable<ReportSignatureLine>().OrderByDescending(sortExpression).ToList();
            }
            gdvSignatureLines.DataBind();
        }
    }

Παρακαλώ βοηθήστε το συντομότερο δυνατόν. Ευχαριστώ!

Δημοσιεύθηκε 22/03/2011 στις 06:53
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
0

αφού είναι χωρίς πηγή δεδομένων, αυτό θα μπορούσε να βοηθήσει:

http://forums.asp.net/p/956540/1177923.aspx

Απαντήθηκε 21/03/2011 στις 11:56
πηγή χρήστη

ψήφοι
4

Δεδομένου ότι είστε ρύθμιση της πηγής δεδομένων στον κώδικα πίσω, τότε θα πρέπει να γράψω ένα κομμάτι του κώδικα για να κάνει τη διαλογή εργασίας.

Κατ 'αρχάς, προσθέστε την ταξινόμηση εκδήλωση για την σήμανση GridView

<asp:GridView ID="gdvSignatureLines" runat="server" CssClass="Grid1" AutoGenerateColumns="False" SkinID="PagedGridView" AllowPaging="True" AllowSorting="True" DataKeyNames="Id" 
   onrowcommand="gdvSignatureLines_RowCommand" 
   onrowdeleting="gdvSignatureLines_RowDeleting" 
   onrowediting="gdvSignatureLines_RowEditing"
   OnSorting="gdvSignatureLines_Sorting"
>

Σε σας κώδικα-πίσω, δεσμεύουν την εκδήλωση διαλογής. Ο κώδικας που ακολουθεί χρησιμοποιεί LINQ να ταξινομήσετε τα δεδομένα και η επανασυνδέεται το GridView.

using System.Linq.Expressions;

int reportID = 123456;

protected void gdvSignatureLines_Sorting(object sender, GridViewSortEventArgs e)
{
   ReportOptionsBO reportOptionsBO = new ReportOptionsBO();
   List<T> ReportOptionsBOList =  reportOptionsBO.GetReportSignatureLineByReportId(reportId);

   if (ReportOptionsBOList != null)
   {
      var param = Expression.Parameter(typeof(T), e.SortExpression);
      var sortExpression = Expression.Lambda<Func<T, object>>(Expression.Convert(Expression.Property(param, e.SortExpression), typeof(object)), param);

      if (ViewState["SortDirection"] == "DESC")
      {
         ViewState["SortDirection"] = "ASC";
         gdvSignatureLines.DataSource = ReportOptionsBOList.AsQueryable<T>().OrderBy(sortExpression);
      }
      else
      {
         ViewState["SortDirection"] = "DESC";
         gdvSignatureLines.DataSource = ReportOptionsBOList.AsQueryable<T>().OrderByDescending(sortExpression);
      }

      gdvSignatureLines.DataBind();
   }
}
Απαντήθηκε 21/03/2011 στις 12:13
πηγή χρήστη

ψήφοι
0

Από τη στιγμή που δεσμεύουν την πηγή δεδομένων που σου πίσω από τον κώδικα, η έκφραση του είδους δεν είναι declaratively ενημέρωση. Θα πρέπει να χειριστεί την αλλαγή της έκφρασης του είδους στον κώδικα-πίσω.

Εδώ είναι το πώς μπορείτε να το κάνετε:

using System.Linq.Expressions;

int reportID = 123456;

protected void gdvSignatureLines_Sorting(object sender, GridViewSortEventArgs e)
{
   ReportOptionsBO reportOptionsBO = new ReportOptionsBO();
   List<T> ReportOptionsBOList =  reportOptionsBO.GetReportSignatureLineByReportId(reportId);

   if (ReportOptionsBOList != null)
   {
      var param = Expression.Parameter(typeof(T), e.SortExpression);
      var sortExpression = Expression.Lambda<Func<T, object>>(Expression.Convert(Expression.Property(param, e.SortExpression), typeof(object)), param);

      if (ViewState["SortDirection"] == "DESC")
      {
         ViewState["SortDirection"] = "ASC";
         gdvSignatureLines.DataSource = ReportOptionsBOList.AsQueryable<T>().OrderBy(sortExpression);
      }
      else
      {
         ViewState["SortDirection"] = "DESC";
         gdvSignatureLines.DataSource = ReportOptionsBOList.AsQueryable<T>().OrderByDescending(sortExpression);
      }

      gdvSignatureLines.DataBind();
   }
}
Απαντήθηκε 22/03/2011 στις 12:50
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more