Hi salini,
I have created sample code which fulfill your requirement.
HTML
<form id="form1" runat="server">
<div>
<asp:DataList ID="DlCustomers" runat="server">
<HeaderTemplate>
<table cellspacing="1px">
<tr>
<td>
Id
</td>
<td>
Name
</td>
<td>
Country
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label ID="lblCustomerId" Text='<%#Eval("CustomerId") %>' runat="server" />
</td>
<td>
<asp:Label ID="lblCustomerName" Text='<%#Eval("CustomerName") %>' runat="server" />
</td>
<td>
<asp:Label ID="lblCountry" Text='<%#Eval("Country") %>' runat="server" />
</td>
<td>
<asp:LinkButton ID="btnEdit" Text="Edit" OnClick="EditMode" runat="server" />
</td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td>
<asp:Label ID="lblCustomerId" Text='<%#Eval("CustomerId") %>' runat="server" />
</td>
<td>
<asp:TextBox ID="txtCustomerName" runat="server" Width="120" Text='<%# Eval("CustomerName") %>' />
</td>
<td>
<asp:TextBox ID="txtCountry" runat="server" Width="120" Text='<%# Eval("Country") %>'
Visible="true" />
</td>
<td>
<asp:LinkButton ID="btnUpdate" Text="Update" OnClick="OnUpdate" runat="server" />
<asp:LinkButton ID="btnCancel" Text="Cancel" OnClick="OnCancel" runat="server" />
</td>
</tr>
</EditItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:DataList>
</div>
<div>
<style type="text/css">
body
{
font-family: Arial;
font-size: 10pt;
}
table
{
border: 1px solid #ccc;
}
table th
{
background-color: #F7F7F7;
color: #333;
font-weight: bold;
}
table th, table td
{
padding: 5px;
border-color: #ccc;
}
</style>
</div>
</form>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("CustomerId", typeof(int));
dt.Columns.Add("CustomerName", typeof(string));
dt.Columns.Add("Country", typeof(string));
dt.Rows.Add(1, "Peter", "USA");
dt.Rows.Add(2, "John", "Spain");
dt.Rows.Add(3, "Maria ", "Norway");
dt.Rows.Add(4, "Michael Holz", "Denmark");
dt.Rows.Add(5, "Jose Pavarotti", "France");
ViewState["Customers"] = dt;
this.BindDatalist();
}
}
private void BindDatalist()
{
DlCustomers.DataSource = (DataTable)ViewState["Customers"];
DlCustomers.DataBind();
}
protected void EditMode(object sender, EventArgs e)
{
DataListItem item = (sender as LinkButton).NamingContainer as DataListItem;
DlCustomers.EditItemIndex = item.ItemIndex;
this.BindDatalist();
}
protected void OnUpdate(object sender, EventArgs e)
{
DataListItem item = (sender as LinkButton).NamingContainer as DataListItem;
DataTable dt = (DataTable)ViewState["Customers"];
string country = (item.FindControl("txtCountry") as TextBox).Text;
string CustomerName = (item.FindControl("txtCustomerName") as TextBox).Text;
dt.Rows[item.ItemIndex]["CustomerName"] = CustomerName;
dt.Rows[item.ItemIndex]["Country"] = country;
ViewState["Customers"] = dt;
DlCustomers.EditItemIndex = -1;
this.BindDatalist();
}
protected void OnCancel(object sender, EventArgs e)
{
DlCustomers.EditItemIndex = -1;
this.BindDatalist();
}
Vb.Net
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not Me.IsPostBack Then
Dim dt As New DataTable()
dt.Columns.Add("CustomerId", GetType(Integer))
dt.Columns.Add("CustomerName", GetType(String))
dt.Columns.Add("Country", GetType(String))
dt.Rows.Add(1, "Peter", "USA")
dt.Rows.Add(2, "John", "Spain")
dt.Rows.Add(3, "Maria ", "Norway")
dt.Rows.Add(4, "Michael Holz", "Denmark")
dt.Rows.Add(5, "Jose Pavarotti", "France")
ViewState("Customers") = dt
Me.BindDatalist()
End If
End Sub
Private Sub BindDatalist()
DlCustomers.DataSource = DirectCast(ViewState("Customers"), DataTable)
DlCustomers.DataBind()
End Sub
Protected Sub EditMode(sender As Object, e As EventArgs)
Dim item As DataListItem = TryCast(TryCast(sender, LinkButton).NamingContainer, DataListItem)
DlCustomers.EditItemIndex = item.ItemIndex
Me.BindDatalist()
End Sub
Protected Sub OnUpdate(sender As Object, e As EventArgs)
Dim item As DataListItem = TryCast(TryCast(sender, LinkButton).NamingContainer, DataListItem)
Dim dt As DataTable = DirectCast(ViewState("Customers"), DataTable)
Dim country As String = TryCast(item.FindControl("txtCountry"), TextBox).Text
Dim CustomerName As String = TryCast(item.FindControl("txtCustomerName"), TextBox).Text
dt.Rows(item.ItemIndex)("CustomerName") = CustomerName
dt.Rows(item.ItemIndex)("Country") = country
ViewState("Customers") = dt
DlCustomers.EditItemIndex = -1
Me.BindDatalist()
End Sub
Protected Sub OnCancel(sender As Object, e As EventArgs)
DlCustomers.EditItemIndex = -1
Me.BindDatalist()
End Sub
Screenshot
