Hi siamandm,
As you are saving the value to database refer the below sample used the dropdownlist SelectedValue.
HTML
<div>
<table>
<tr>
<td>
Asset Name:
</td>
<td>
<asp:TextBox ID="txtAssetName" runat="server" />
</td>
</tr>
<tr>
<td>
Asset SN:
</td>
<td>
<asp:TextBox ID="txtAssetSN" runat="server" />
</td>
</tr>
<tr>
<td>
Asset Make:
</td>
<td>
<div class="col-lg-3">
<asp:DropDownList ID="ddlMake" runat="server" CssClass="form-control">
</asp:DropDownList>
</div>
</td>
</tr>
<tr>
<td>
Asset Model:
</td>
<td>
<div class="col-lg-3">
<asp:DropDownList ID="ddlModel" runat="server" CssClass="form-control">
</asp:DropDownList>
</div>
</td>
</tr>
<tr>
<td>
Asset Status:
</td>
<td>
<div class="col-lg-3">
<asp:DropDownList ID="ddlAssetStatus" runat="server" CssClass="form-control">
</asp:DropDownList>
</div>
</td>
</tr>
<tr>
<td>
Assigned to:
</td>
<td>
<div class="col-lg-3">
<asp:DropDownList ID="ddlAssignedto" runat="server" CssClass="form-control">
</asp:DropDownList>
</div>
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnUpdate" Text="Update Asset" runat="server" OnClick="btnUpdate_Click" />
</td>
<td>
<asp:Button ID="btnCancel" Text="Cancel" runat="server" />
</td>
</tr>
</table>
<br />
<asp:GridView ID="GVAssetList" runat="server" DataKeyNames="Asset_ID" AutoGenerateColumns="False"
OnSelectedIndexChanging="btnSelect_Click">
<Columns>
<asp:BoundField DataField="Asset_ID" HeaderText="Asset ID" />
<asp:BoundField DataField="Asset_Name" HeaderText="Asset Name" />
<asp:BoundField DataField="Asset_SN" HeaderText="Asset SN" />
<asp:TemplateField HeaderText="Asset Make">
<ItemTemplate>
<asp:Label ID="lblMake" runat="server" Text='<%# Eval("MakeName") %>'></asp:Label>
<asp:HiddenField ID="hfMake" runat="server" Value='<%# Eval("Make") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Asset Model">
<ItemTemplate>
<asp:Label ID="lblModel" runat="server" Text='<%# Eval("ModelName") %>'></asp:Label>
<asp:HiddenField ID="hfModel" runat="server" Value='<%# Eval("Model") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Asset Status">
<ItemTemplate>
<asp:Label ID="lblAssetStatus" runat="server" Text='<%# Eval("StatusName") %>'></asp:Label>
<asp:HiddenField ID="hfAssetStatus" runat="server" Value='<%# Eval("Asset_Status") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Assinged to">
<ItemTemplate>
<asp:Label ID="lblEmpName" runat="server" Text='<%# Eval("AssignedName") %>'></asp:Label>
<asp:HiddenField ID="hfEmpName" runat="server" Value='<%# Eval("Emp_Name") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button runat="server" ID="btnSelect" Text="Select" OnClick="btnSelect_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
BindGrid();
BindMake();
BindModel();
BindAssetStatus();
BindAssignedTo();
ListItem select = new ListItem("Select", "0");
ddlMake.Items.Insert(0, select);
ddlModel.Items.Insert(0, select);
ddlAssetStatus.Items.Insert(0, select);
ddlAssignedto.Items.Insert(0, select);
}
}
private void BindGrid()
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[1].ConnectionString);
SqlCommand cmd = new SqlCommand("SP_GetAsset", con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
GVAssetList.DataSource = dt;
GVAssetList.DataBind();
}
private DataTable GetData(string query)
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[1].ConnectionString);
SqlCommand cmd = new SqlCommand(query, con);
cmd.CommandType = CommandType.Text;
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
return dt;
}
private void BindMake()
{
DataTable dt = GetData("SELECT DISTINCT Make_ID,Make FROM tblMake");
ddlMake.DataSource = dt;
ddlMake.DataTextField = "Make";
ddlMake.DataValueField = "Make_ID";
ddlMake.DataBind();
}
private void BindModel()
{
DataTable dt = GetData("SELECT DISTINCT Model_ID,Model FROM tblModel");
ddlModel.DataSource = dt;
ddlModel.DataTextField = "Model";
ddlModel.DataValueField = "Model_ID";
ddlModel.DataBind();
}
private void BindAssetStatus()
{
DataTable dt = GetData("SELECT DISTINCT Status_ID,Status FROM tblStatus");
ddlAssetStatus.DataSource = dt;
ddlAssetStatus.DataTextField = "Status";
ddlAssetStatus.DataValueField = "Status_ID";
ddlAssetStatus.DataBind();
}
private void BindAssignedTo()
{
DataTable dt = GetData("SELECT DISTINCT Assigned_ID,Assigned FROM tblAssigned");
ddlAssignedto.DataSource = dt;
ddlAssignedto.DataTextField = "Assigned";
ddlAssignedto.DataValueField = "Assigned_ID";
ddlAssignedto.DataBind();
}
protected void btnSelect_Click(object sender, EventArgs e)
{
ddlMake.ClearSelection();
ddlModel.ClearSelection();
ddlAssetStatus.ClearSelection();
ddlAssignedto.ClearSelection();
GridViewRow SelectedRow = ((sender as Button).NamingContainer as GridViewRow);
Session["GVAssetList_ID"] = GVAssetList.DataKeys[SelectedRow.RowIndex].Value;
txtAssetName.Text = SelectedRow.Cells[1].Text.Trim().Replace(" ", "");
txtAssetSN.Text = SelectedRow.Cells[2].Text.Trim().Replace(" ", "");
string make = (SelectedRow.FindControl("hfMake") as HiddenField).Value;
string model = (SelectedRow.FindControl("hfModel") as HiddenField).Value;
string status = (SelectedRow.FindControl("hfAssetStatus") as HiddenField).Value;
string assigned = (SelectedRow.FindControl("hfEmpName") as HiddenField).Value;
ddlMake.Items.FindByValue(make == "" ? "0" : make).Selected = true;
ddlModel.Items.FindByValue(model == "" ? "0" : model).Selected = true;
ddlAssetStatus.Items.FindByValue(status == "" ? "0" : status).Selected = true;
ddlAssignedto.Items.FindByValue(assigned == "" ? "0" : assigned).Selected = true;
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
if (Session["GVAssetList_ID"] != null)
{
try
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[1].ConnectionString);
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "SP_EditAsset";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Asset_ID", Convert.ToInt32(Session["GVAssetList_ID"]));
cmd.Parameters.AddWithValue("@Asset_Name", txtAssetName.Text);
cmd.Parameters.AddWithValue("@Asset_SN", txtAssetSN.Text);
cmd.Parameters.AddWithValue("@Asset_Make", ddlMake.SelectedValue);
cmd.Parameters.AddWithValue("@Asset_Model", ddlModel.SelectedValue);
cmd.Parameters.AddWithValue("@Asset_Status", ddlAssetStatus.SelectedValue);
cmd.Parameters.AddWithValue("@Emp_ID_FK", ddlAssignedto.SelectedValue);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
BindGrid();
}
catch
{ }
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not Me.IsPostBack Then
BindGrid()
BindMake()
BindModel()
BindAssetStatus()
BindAssignedTo()
Dim [select] As New ListItem("Select", "0")
ddlMake.Items.Insert(0, [select])
ddlModel.Items.Insert(0, [select])
ddlAssetStatus.Items.Insert(0, [select])
ddlAssignedto.Items.Insert(0, [select])
End If
End Sub
Private Sub BindGrid()
Dim dt As New DataTable()
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings(1).ConnectionString)
Dim cmd As New SqlCommand("SP_GetAsset", con)
cmd.CommandType = CommandType.StoredProcedure
con.Open()
Dim da As New SqlDataAdapter(cmd)
da.Fill(dt)
con.Close()
GVAssetList.DataSource = dt
GVAssetList.DataBind()
End Sub
Private Function GetData(query As String) As DataTable
Dim dt As New DataTable()
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings(1).ConnectionString)
Dim cmd As New SqlCommand(query, con)
cmd.CommandType = CommandType.Text
con.Open()
Dim da As New SqlDataAdapter(cmd)
da.Fill(dt)
con.Close()
Return dt
End Function
Private Sub BindMake()
Dim dt As DataTable = GetData("SELECT DISTINCT Make_ID,Make FROM tblMake")
ddlMake.DataSource = dt
ddlMake.DataTextField = "Make"
ddlMake.DataValueField = "Make_ID"
ddlMake.DataBind()
End Sub
Private Sub BindModel()
Dim dt As DataTable = GetData("SELECT DISTINCT Model_ID,Model FROM tblModel")
ddlModel.DataSource = dt
ddlModel.DataTextField = "Model"
ddlModel.DataValueField = "Model_ID"
ddlModel.DataBind()
End Sub
Private Sub BindAssetStatus()
Dim dt As DataTable = GetData("SELECT DISTINCT Status_ID,Status FROM tblStatus")
ddlAssetStatus.DataSource = dt
ddlAssetStatus.DataTextField = "Status"
ddlAssetStatus.DataValueField = "Status_ID"
ddlAssetStatus.DataBind()
End Sub
Private Sub BindAssignedTo()
Dim dt As DataTable = GetData("SELECT DISTINCT Assigned_ID,Assigned FROM tblAssigned")
ddlAssignedto.DataSource = dt
ddlAssignedto.DataTextField = "Assigned"
ddlAssignedto.DataValueField = "Assigned_ID"
ddlAssignedto.DataBind()
End Sub
Protected Sub btnSelect_Click(sender As Object, e As EventArgs)
ddlMake.ClearSelection()
ddlModel.ClearSelection()
ddlAssetStatus.ClearSelection()
ddlAssignedto.ClearSelection()
Dim SelectedRow As GridViewRow = TryCast(TryCast(sender, Button).NamingContainer, GridViewRow)
Session("GVAssetList_ID") = GVAssetList.DataKeys(SelectedRow.RowIndex).Value
txtAssetName.Text = SelectedRow.Cells(1).Text.Trim().Replace(" ", "")
txtAssetSN.Text = SelectedRow.Cells(2).Text.Trim().Replace(" ", "")
Dim make As String = TryCast(SelectedRow.FindControl("hfMake"), HiddenField).Value
Dim model As String = TryCast(SelectedRow.FindControl("hfModel"), HiddenField).Value
Dim status As String = TryCast(SelectedRow.FindControl("hfAssetStatus"), HiddenField).Value
Dim assigned As String = TryCast(SelectedRow.FindControl("hfEmpName"), HiddenField).Value
ddlMake.Items.FindByValue(If(make = "", "0", make)).Selected = True
ddlModel.Items.FindByValue(If(model = "", "0", model)).Selected = True
ddlAssetStatus.Items.FindByValue(If(status = "", "0", status)).Selected = True
ddlAssignedto.Items.FindByValue(If(assigned = "", "0", assigned)).Selected = True
End Sub
Protected Sub btnUpdate_Click(sender As Object, e As EventArgs)
If Session("GVAssetList_ID") IsNot Nothing Then
Try
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings(1).ConnectionString)
Dim cmd As SqlCommand = con.CreateCommand()
cmd.CommandText = "SP_EditAsset"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@Asset_ID", Convert.ToInt32(Session("GVAssetList_ID")))
cmd.Parameters.AddWithValue("@Asset_Name", txtAssetName.Text)
cmd.Parameters.AddWithValue("@Asset_SN", txtAssetSN.Text)
cmd.Parameters.AddWithValue("@Asset_Make", ddlMake.SelectedValue)
cmd.Parameters.AddWithValue("@Asset_Model", ddlModel.SelectedValue)
cmd.Parameters.AddWithValue("@Asset_Status", ddlAssetStatus.SelectedValue)
cmd.Parameters.AddWithValue("@Emp_ID_FK", ddlAssignedto.SelectedValue)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
BindGrid()
Catch
End Try
End If
End Sub
SQL
CREATE TABLE Asset(
Asset_ID int NULL,
Asset_Name varchar(50) NULL,
Asset_SN varchar(50) NULL,
Make varchar(50) NULL,
Model varchar(50) NULL,
Asset_Status varchar(50) NULL,
Emp_Name varchar(50) NULL
)
INSERT Asset (Asset_ID, Asset_Name, Asset_SN, Make, Model, Asset_Status, Emp_Name)
VALUES (1, N'hp pavilion2', N'32143', N'1', N'1', N'0', N'1')
INSERT Asset (Asset_ID, Asset_Name, Asset_SN, Make, Model, Asset_Status, Emp_Name)
VALUES (2, N'laptop hp', N'86yuh', N'1', N'2', N'0', N'0')
INSERT Asset (Asset_ID, Asset_Name, Asset_SN, Make, Model, Asset_Status, Emp_Name)
VALUES (4, N'work station', N'fasdfads', N'1', N'2', N'0', N'0')
CREATE TABLE tblMake(Make_ID INT,Make VARCHAR(50))
INSERT INTO tblMake VALUES('1', 'HP')
INSERT INTO tblMake VALUES('2', 'Dell')
CREATE TABLE tblModel(Model_ID INT,Model VARCHAR(50))
INSERT INTO tblModel VALUES('1', 'Pavilion DV6')
INSERT INTO tblModel VALUES('2', 'EliteBook Pro')
CREATE TABLE tblStatus(Status_ID INT,Status VARCHAR(50))
INSERT INTO tblStatus VALUES('1', 'New')
INSERT INTO tblStatus VALUES('2', 'Used')
INSERT INTO tblStatus VALUES('3','Defective')
CREATE TABLE tblAssigned(Assigned_ID INT,Assigned VARCHAR(50))
INSERT INTO tblAssigned VALUES('1', 'Best Name')
CREATE PROC SP_GetAsset
AS
BEGIN
SELECT Asset_ID,Asset_Name,Asset_SN,ass.Make,ISNULL(ma.Make,'')MakeName,
ass.Model,ISNULL(mo.Model,'')ModelName,
ass.Asset_Status,ISNULL(st.Status,'')StatusName,
ass.Emp_Name,ISNULL(assi.Assigned,'')AssignedName
FROM Asset ass
LEFT OUTER JOIN tblMake ma ON ma.Make_ID = ass.Make
LEFT OUTER JOIN tblModel mo ON mo.Model_ID = ass.Model
LEFT OUTER JOIN tblStatus st ON st.Status_ID = ass.Asset_Status
LEFT OUTER JOIN tblAssigned assi ON assi.Assigned_ID = ass.Emp_Name
END
CREATE PROC SP_EditAsset
@Asset_ID int,
@Asset_Name nvarchar(50),
@Asset_SN nvarchar(50),
@Asset_Make int,
@Asset_Model int,
@Emp_ID_FK int,
@Asset_Status nvarchar(50)
AS
BEGIN
UPDATE Asset
SET Asset_Name = @Asset_Name,
Asset_SN = @Asset_SN,
Make = @Asset_Make,
Model = @Asset_Model,
Emp_Name = @Emp_ID_FK,
Asset_Status = @Asset_Status
WHERE Asset_ID = @Asset_ID
END
Screenshot