격자보기가 잘 표시되고 두 열 중 정렬이 잘됩니다. 그러나 링크 버튼을 클릭하면 반환되는 CommandArgument가 올바른 값이 아닙니다. 마치 CommandArgument가 행에 바인딩되어 있고 정렬되지 않은 것입니다.GridView는 정렬하지만 LinkButton의 CommandArgument는
즉, 전 종류의
Text Command
abc A
aaa B
aab C
AAA에 일종의
Text Command
aaa A
aab B
abc C
클릭의 인수로 "A"를 반환 후 정상적으로처럼, B 없습니다.
는의 GridView는 영문 파일에 다음과 같이 정의된다 :
<asp:GridView ID="GridView1" runat="server"
AllowSorting="True"
AutoGenerateColumns="False"
EmptyDataText="No Results to Display"
GridLines="None"
onsorting="GridView1_Sorting" >
<Columns>
<asp:TemplateField HeaderText="File Name" SortExpression="Path">
<ItemTemplate>
<asp:LinkButton ID="linkbutton1" runat="server" Text='<%# Eval("Title") %>' OnCommand="LinkButton_Click" CommandArgument='<%# Bind("Path") %>' ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Document Type" DataField="DocumentCategory (Text)" SortExpression="DocumentCategory (Text)" />
</Columns>
</asp:GridView>
그것은 viewstate가있는 SQL 쿼리에 의해 채워진 DataView를 결합 및 저장은
ViewState["GridView1_DataSource"] = ds.Tables[0];
DataView dv = new DataView(ds.Tables[0]);
GridView1.DataSource = dv;
GridView1.DataBind();
내 정렬 방법은
입니다protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string sortDir = "ASC";
if (ViewState["SortDirection"] == null)
ViewState["SortDirection"] = "ASC";
if (ViewState["SortDirection"].ToString() == "ASC")
{
sortDir = "DESC";
ViewState["SortDirection"] = "DESC";
}
else
{
ViewState["SortDirection"] = "ASC";
}
DataTable dt = (DataTable)ViewState["GridView1_DataSource"];
DataView dv = new DataView(dt);
dv.Sort = e.SortExpression + " " + sortDir;
GridView1.DataSource = dv;
GridView1.DataBind();
}
당신이 해결책을 찾았나요? 나는 같은 문제가있다. – Zafar
나는 동일한 문제가있다. 아무도? – Apollo