rhino000 says:
I have a Two Gridview
First Gridview Consiste of 13 columns..In above the first gridview i having checkboxlist it contains Headertext of the first gridview.
In the second gridview contains what we are checked in the checkboxlist that get the value from the Firstgirview and bind it int he second gridview..
In this Case First we checked 10th column means it appears first place in the second gridview..After we Check the 2ns column means it occupies the 1st place ..this is my issuue I want the 10th column occupies firstplace and 2ns column occupies 2nd Place
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
private void sortingData(List< string > columname)
{
DataTable dtsorting = new DataTable();
dtsorting = (DataTable)ViewState[ "data" ];
DataTable dummydt = new DataTable();
if (columname.Count > 0)
{
dummydt = dtsorting.DefaultView.ToTable( false , columname.ToArray());
grdviw.DataSource = dummydt;
grdviw.DataBind();
}
else
{
grdviw.DataSource = null ;
grdviw.DataBind();
}
}
|
From here Am filter My gridview Through Checkbox
Refer the below sample code for your reference according to your code logic you may have to implement by yourself as if your code may be different.
HTML
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" />
<br />
<asp:Label ID="Label1" runat="server" Text="Has Header ?"></asp:Label>
<asp:RadioButtonList ID="rbHDR" runat="server">
<asp:ListItem Text="Yes" Value="Yes" Selected="True"></asp:ListItem>
<asp:ListItem Text="No" Value="No"></asp:ListItem>
</asp:RadioButtonList>
<table width="60%" height="100%">
<tr>
<td>
</td>
<td>
<asp:CheckBoxList ID="cckk" runat="server" RepeatDirection="Horizontal" OnSelectedIndexChanged="cckk_SelectedIndexChanged"
AutoPostBack="true">
</asp:CheckBoxList>
</td>
</tr>
<tr>
<td>
<asp:GridView ID="grdBindExcel" runat="server" PageSize="10" AllowPaging="true" OnPageIndexChanging="grdBindExcel_PageIndexChanging"
OnRowDataBound="grdBindExcel_RowDataBound" />
</td>
<td>
<asp:GridView ID="gridview1" PageSize="10" AllowPaging="true" AutoGenerateColumns="true"
OnPageIndexChanging="gridview1_PageIndexChanging" runat="server">
</asp:GridView>
</td>
</tr>
</table>
</div>
</div>
</form>
C#
List<SelectListItem> items = new List<SelectListItem>();
protected void btnUpload_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
string FilePath = Server.MapPath(FolderPath + FileName);
FileUpload1.SaveAs(FilePath);
Import_To_Grid(FilePath, Extension, rbHDR.SelectedItem.Text);
}
}
private void Import_To_Grid(string FilePath, string Extension, string isHDR)
{
string conStr = "";
switch (Extension)
{
case ".xls": //Excel 97-03
conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
break;
case ".xlsx": //Excel 07
conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
break;
}
conStr = String.Format(conStr, FilePath, isHDR);
OleDbConnection connExcel = new OleDbConnection(conStr);
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
DataTable dt = new DataTable();
DataTable dt1 = new DataTable();
cmdExcel.Connection = connExcel;
//Get the name of First Sheet
connExcel.Open();
DataTable dtExcelSchema;
dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
connExcel.Close();
//Read Data from First Sheet
connExcel.Open();
cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
oda.SelectCommand = cmdExcel;
oda.Fill(dt);
//Bind Data to GridView
ViewState["Data"] = dt;
grdBindExcel.DataSource = dt;
grdBindExcel.DataBind();
connExcel.Close();
PopulateColumnName();
}
private void GetData()
{
DataTable dt = new DataTable();
dt = (DataTable)ViewState["Data"];
grdBindExcel.DataSource = dt;
grdBindExcel.DataBind();
}
protected void grdBindExcel_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
DataTable dt = new DataTable();
dt = (DataTable)ViewState["Data"];
grdBindExcel.DataSource = dt;
grdBindExcel.PageIndex = e.NewPageIndex;
grdBindExcel.DataBind();
}
protected void gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
List<string> columnName = (List<string>)ViewState["SortData"];
GetsortingData(columnName);
DataTable dtsorting = new DataTable();
dtsorting = (DataTable)ViewState["Data"];
DataTable dummaydt = new DataTable();
dummaydt = dtsorting.DefaultView.ToTable(false, columnName.ToArray());
gridview1.DataSource = dummaydt;
gridview1.PageIndex = e.NewPageIndex;
gridview1.DataBind();
}
protected void cckk_SelectedIndexChanged(object sender, EventArgs e)
{
List<string> columnName = null;
/*To get currently checked or unchecked Item from checkboxList*/
string eventTarget = Request.Form.Get("__EVENTTARGET");
int index = Convert.ToInt32(eventTarget.Substring(eventTarget.Length - 1));
bool selected = cckk.Items[index].Selected;
// To find total unchecked items from checkbox
List<ListItem> UncheckedItems = cckk.Items.Cast<ListItem>()
.Where(li => !li.Selected)
.ToList();
// to find selected Item text for column name
string value = cckk.Items[index].Text;
// if ViewState["SortData"] null then it will add first column dynamically
if (ViewState["SortData"] == null)
{
DataTable dt = new DataTable();
columnName = new List<string>();
columnName.Add(value);
ViewState["SortData"] = columnName;
}
else
{
// if ViewState["SortData"] not null it will get latest column Structure
columnName = (List<string>)ViewState["SortData"];
// If item checked then add column to column Name string
if (selected)
{
columnName.Add(value);
}
else
{
// If item unchecked then remove column to column Name string
columnName.Remove(value);
// if total unchecked Items equal to Total checkboxlist item then it will make ViewState["SortData"] as null
if (UncheckedItems.Count == cckk.Items.Count)
{
ViewState["SortData"] = null;
}
}
}
GetsortingData(columnName);
}
private void GetsortingData(List<string> columnName)
{
DataTable dtsorting = new DataTable();
dtsorting = (DataTable)ViewState["Data"];
DataTable dummaydt = new DataTable();
if (columnName.Count > 0)
{
dummaydt = dtsorting.DefaultView.ToTable(false, columnName.ToArray());
gridview1.DataSource = dummaydt;
gridview1.DataBind();
}
else
{
gridview1.DataSource = null;
gridview1.DataBind();
}
}
protected void grdBindExcel_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
items.Add(new SelectListItem
{
Text = e.Row.Cells[i].Text,
Value = i
});
}
}
}
private void PopulateColumnName()
{
cckk.DataSource = items;
cckk.DataTextField = "Text";
cckk.DataValueField = "Value";
cckk.DataBind();
}
public class SelectListItem
{
public string Text { get; set; }
public int Value { get; set; }
}
private void firstcheckboxchekced(string checkboxName)
{
foreach (ListItem checkItem in cckk.Items)
{
if (checkItem.Text == checkboxName.ToString())
{
checkItem.Selected = true;
}
}
}
Screenshot
