Hi anvina,
This is not created new instance. It is assigned to new DataSet skills.
So when ever skills changed the DataSet dsSkills also changed.
So to over come from the issue, insted of assigning the new DataSet directly we have to use DataSet Copy method wich will create new instance.
And it will not reflect the changes with each other.
Check the example.
HTML
<asp:GridView runat="server" ID="gvCustomers" /><hr />
<asp:GridView runat="server" ID="GridView1" />
C#
private DataSet dsSkills;
protected void Page_Load(object sender, EventArgs e)
{
gvCustomers.DataSource = GetParameters();
gvCustomers.DataBind();
GridView1.DataSource = dsSkills;
GridView1.DataBind();
}
private DataSet GetParameters()
{
DataSet skills;
if (dsSkills == null)
{
dsSkills = GetSkills();
}
skills = dsSkills.Copy();
DataRow drow = skills.Tables[0].NewRow();
drow[0] = "SERVICE";
skills.Tables[0].Rows.InsertAt(drow, 0);
drow = skills.Tables[0].NewRow();
drow[0] = "LAST USED SKILL 2";
skills.Tables[0].Rows.InsertAt(drow, 0);
return skills;
}
private DataSet GetSkills()
{
DataSet multiColumnData = new DataSet(); DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("Name", typeof(string)) });
dt.Rows.Add("John Hammond");
dt.Rows.Add("Mudassar Khan");
dt.Rows.Add("Suzanne Mathews");
dt.Rows.Add("Robert Schidner");
multiColumnData.Tables.Add(dt);
return multiColumnData;
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
gvCustomers.DataSource = GetParameters()
gvCustomers.DataBind()
GridView1.DataSource = dsSkills
GridView1.DataBind()
End Sub
Private Function GetParameters() As DataSet
Dim skills As DataSet
If dsSkills Is Nothing Then
dsSkills = GetSkills()
End If
skills = dsSkills.Copy()
Dim drow As DataRow = skills.Tables(0).NewRow()
drow(0) = "SERVICE"
skills.Tables(0).Rows.InsertAt(drow, 0)
drow = skills.Tables(0).NewRow()
drow(0) = "LAST USED SKILL 2"
skills.Tables(0).Rows.InsertAt(drow, 0)
Return skills
End Function
Private Function GetSkills() As DataSet
Dim multiColumnData As DataSet = New DataSet()
Dim dt As DataTable = New DataTable()
dt.Columns.AddRange(New DataColumn() {New DataColumn("Name", GetType(String))})
dt.Rows.Add("John Hammond")
dt.Rows.Add("Mudassar Khan")
dt.Rows.Add("Suzanne Mathews")
dt.Rows.Add("Robert Schidner")
multiColumnData.Tables.Add(dt)
Return multiColumnData
End Function
Output
Name |
LAST USED SKILL 2 |
SERVICE |
John Hammond |
Mudassar Khan |
Suzanne Mathews |
Robert Schidner |
Name |
John Hammond |
Mudassar Khan |
Suzanne Mathews |
Robert Schidner |