GridView中的DropDownList值未在数据库中更新 [英] DropDownList Value in GridView Not Updating in Database
本文介绍了GridView中的DropDownList值未在数据库中更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个网格视图,它将更新用户详细信息。有两个下拉列表,其值未在数据库中更新,而原始值将被删除,空白值将被替换。调试代码后,我发现所有值都正确地发送到各自的函数和变量。像文本框这样的其他字段正在更新。
这是代码
HTML
Hi,
I have a grid view which will update user details. There are 2 dropdowns whose values are not getting updated in the DB instead the original values get deleted and blank values are getting replaced. After debugging the code I find that all values are getting properly sent to respective functions and variables. The other fields like textboxes are getting updated.
This is the code
The HTML
<asp:GridView ID="grdUsers" runat="server" AutoGenerateColumns="False"
DataKeyNames="userid" DataSourceID="dsUsers" EnableModelValidation="True"
onrowdatabound="grdUsers_RowDataBound" onrowcommand="grdUsers_RowCommand"
onrowediting="grdUsers_RowEditing" onrowupdating="grdUsers_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="User Name">
<EditItemTemplate>
<asp:TextBox ID="txtgrdUname" runat="server" Text="<%# Bind('username') %>"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<%# Eval("username") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="PIN">
<EditItemTemplate>
<asp:TextBox ID="txtgrdPIN" runat="server" Text="<%# Bind('pin') %>" Enabled="false"></asp:TextBox>
<asp:LinkButton ID="lnkgrdGenerate" runat="server" CommandName="Generate">Generate</asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<%# Eval("pin") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="E-Mail">
<EditItemTemplate>
<asp:TextBox ID="txtgrdEmail" runat="server" Text="<%# Bind('email') %>"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<%# Eval("email") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Designation">
<EditItemTemplate>
<asp:DropDownList ID="ddlgrdDesg" runat="server" >
<asp:ListItem>Sales</asp:ListItem>
<asp:ListItem>Client Service</asp:ListItem>
<asp:ListItem>Content Writer</asp:ListItem>
<asp:ListItem>PR</asp:ListItem>
<asp:ListItem>HR</asp:ListItem>
<asp:ListItem>Admin</asp:ListItem>
<asp:ListItem>Network Administrator/Engineer</asp:ListItem>
<asp:ListItem>Software Developer</asp:ListItem>
<asp:ListItem>DBA</asp:ListItem>
<asp:ListItem>Web designer</asp:ListItem>
<asp:ListItem>Flash Programmer</asp:ListItem>
<asp:ListItem>Reporting Manager</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<%# Eval("designation") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="User Type">
<EditItemTemplate>
<asp:DropDownList ID="ddlgrdUType" runat="server">
<asp:ListItem>Admin</asp:ListItem>
<asp:ListItem>Normal User</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<%# Eval("usertype") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<EditItemTemplate>
<asp:LinkButton ID="lnkgrdOK" runat="server" CommandName="UPDATE">OK</asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="lnkgrdEDIT" runat="server" CommandName="EDIT">Edit</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkgrdDelete" runat="server" CommandName="DELETE">Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<%-- <asp:BoundField DataField="pin" HeaderText="pin" SortExpression="pin" />
<asp:BoundField DataField="email" HeaderText="email" SortExpression="email" />
<asp:BoundField DataField="designation" HeaderText="designation"
SortExpression="designation" />
<asp:BoundField DataField="usertype" HeaderText="usertype"
SortExpression="usertype" />--%>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="dsUsers" runat="server"
ConnectionString="<%$ ConnectionStrings:GloboseMasterConnectionString %>"
DeleteCommand="DELETE FROM [Users] WHERE [userid] = @userid"
InsertCommand="INSERT INTO [Users] ([username], [pin], [email], [designation], [usertype]) VALUES (@username, @pin, @email, @designation, @usertype)"
SelectCommand="SELECT * FROM [Users]"
UpdateCommand="UPDATE [Users] SET [username] = @username, [pin] = @pin, [email] = @email, [designation] = @designation, [usertype] = @usertype WHERE [userid] = @userid">
<DeleteParameters>
<asp:Parameter Name="userid" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="username" Type="String" />
<asp:Parameter Name="pin" Type="String" />
<asp:Parameter Name="email" Type="String" />
<asp:Parameter Name="designation" Type="String" />
<asp:Parameter Name="usertype" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="username" Type="String" />
<asp:Parameter Name="pin" Type="String" />
<asp:Parameter Name="email" Type="String" />
<asp:Parameter Name="designation" Type="String" />
<asp:Parameter Name="usertype" Type="String" />
<asp:Parameter Name="userid" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
The C# Code Behind
The C# Code Behind
protected void grdUsers_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
UserBAL user = new UserBAL();
string uname, pin, designation, usertype,email;
int id;
id = Convert.ToInt32(grdUsers.DataKeys[e.RowIndex].Value.ToString());
uname = Convert.ToString(((TextBox)grdUsers.Rows[e.RowIndex].FindControl("txtgrdUname")).Text.Trim());
pin = Convert.ToString(((TextBox)grdUsers.Rows[e.RowIndex].FindControl("txtgrdPIN")).Text.Trim());
email = Convert.ToString(((TextBox)grdUsers.Rows[e.RowIndex].FindControl("txtgrdEmail")).Text.Trim());
designation = Convert.ToString(((DropDownList)grdUsers.Rows[e.RowIndex].FindControl("ddlgrdDesg")).SelectedItem.Text);
usertype = Convert.ToString(((DropDownList)grdUsers.Rows[e.RowIndex].FindControl("ddlgrdUType")).SelectedItem.Text);
int result = user.UpdateDetails(id, uname, pin, designation, usertype,email);
grdUsers.EditIndex = -1;
grdUsers.DataBind();
}
protected void grdUsers_RowEditing(object sender, GridViewEditEventArgs e)
{
grdUsers.EditIndex = e.NewEditIndex;
grdUsers.DataBind();
}
推荐答案
ConnectionStrings:GloboseMasterConnectionString %>\"
DeleteCommand=\"DELETE FROM [Users] WHERE [userid] = @userid\"
InsertCommand=\"INSERT INTO [Users] ([username], [pin], [email], [designation], [usertype]) VALUES (@username, @pin, @email, @designation, @usertype)\"
SelectCommand=\"SELECT * FROM [Users]\"
UpdateCommand=\"UPDATE [Users] SET [username] = @username, [pin] = @pin, [email] = @email, [designation] = @designation, [usertype] = @usertype WHERE [userid] = @userid\">
<DeleteParameters>
<asp:Parameter Name=\"userid\" Type=\"Int32\" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name=\"username\" Type=\"String\" />
<asp:Parameter Name=\"pin\" Type=\"String\" />
<asp:Parameter Name=\"email\" Type=\"String\" />
<asp:Parameter Name=\"designation\" Type=\"String\" />
<asp:Parameter Name=\"use rtype\" Type=\"String\" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name=\"username\" Type=\"String\" />
<asp:Parameter Name=\"pin\" Type=\"String\" />
<asp:Parameter Name=\"email\" Type=\"String\"/>
<asp:Parameter Name=\"designation\" Type=\"String\" />
<asp:Parameter Name=\"usertype\" Type=\"String\" />
<asp:Parameter Name=\"userid\" Type=\"Int32\" />
</UpdateParameters>
</asp:SqlDataSource>
ConnectionStrings:GloboseMasterConnectionString %>" DeleteCommand="DELETE FROM [Users] WHERE [userid] = @userid" InsertCommand="INSERT INTO [Users] ([username], [pin], [email], [designation], [usertype]) VALUES (@username, @pin, @email, @designation, @usertype)" SelectCommand="SELECT * FROM [Users]" UpdateCommand="UPDATE [Users] SET [username] = @username, [pin] = @pin, [email] = @email, [designation] = @designation, [usertype] = @usertype WHERE [userid] = @userid"> <DeleteParameters> <asp:Parameter Name="userid" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="username" Type="String" /> <asp:Parameter Name="pin" Type="String" /> <asp:Parameter Name="email" Type="String" /> <asp:Parameter Name="designation" Type="String" /> <asp:Parameter Name="usertype" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="username" Type="String" /> <asp:Parameter Name="pin" Type="String" /> <asp:Parameter Name="email" Type="String" /> <asp:Parameter Name="designation" Type="String" /> <asp:Parameter Name="usertype" Type="String" /> <asp:Parameter Name="userid" Type="Int32" /> </UpdateParameters> </asp:SqlDataSource>
The C# Code Behind
The C# Code Behind
protected void grdUsers_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
UserBAL user = new UserBAL();
string uname, pin, designation, usertype,email;
int id;
id = Convert.ToInt32(grdUsers.DataKeys[e.RowIndex].Value.ToString());
uname = Convert.ToString(((TextBox)grdUsers.Rows[e.RowIndex].FindControl("txtgrdUname")).Text.Trim());
pin = Convert.ToString(((TextBox)grdUsers.Rows[e.RowIndex].FindControl("txtgrdPIN")).Text.Trim());
email = Convert.ToString(((TextBox)grdUsers.Rows[e.RowIndex].FindControl("txtgrdEmail")).Text.Trim());
designation = Convert.ToString(((DropDownList)grdUsers.Rows[e.RowIndex].FindControl("ddlgrdDesg")).SelectedItem.Text);
usertype = Convert.ToString(((DropDownList)grdUsers.Rows[e.RowIndex].FindControl("ddlgrdUType")).SelectedItem.Text);
int result = user.UpdateDetails(id, uname, pin, designation, usertype,email);
grdUsers.EditIndex = -1;
grdUsers.DataBind();
}
protected void grdUsers_RowEditing(object sender, GridViewEditEventArgs e)
{
grdUsers.EditIndex = e.NewEditIndex;
grdUsers.DataBind();
}
I found the problem.
Actually the SQL Data Source Update Query was causing the problem. I just removed the parameters from the Update Command Attribute causing the problem from the query and it worked.
Now I have another problem which i will start a new thread.
The First Code of mine:
I found the problem.
Actually the SQL Data Source Update Query was causing the problem. I just removed the parameters from the Update Command Attribute causing the problem from the query and it worked.
Now I have another problem which i will start a new thread.
The First Code of mine:
<asp:sqldatasource id="dsUsers" runat="server" xmlns:asp="#unknown">
ConnectionString="<%
ConnectionStrings:GloboseMasterConnectionSt ring %>\"
DeleteCommand=\"DELETE FROM [Users] WHERE [userid] = @userid\"
InsertCommand=\"INSERT INTO [Users] ([username], [pin], [email], [designation], [usertype]) VALUES (@username, @pin, @email, @designation, @usertype)\"
SelectCommand=\"SELECT * FROM [Users]\"
UpdateCommand=\"UPDATE [Users] SET [username] = @username, [pin] = @pin, [email] = @email, [designation] = @designation, [usertype] = @usertype WHERE [userid] = @userid\">
<deleteparameters>
<asp:parameter name=\"userid\" type=\"Int32\" />
</deleteparameters>
<insertparameters>
<asp:parameter name=\"username\" type=\"String\" />
<asp:parameter name=\"pin\" type=\"String\" />
<asp:parameter name=\"email\" type=\"String\" />
<asp:parameter name=\"designation\" type=\"String\" />
<asp:parameter name=\"usertype\" type=\"String\" />
</insertparameters>
<updateparameters>
<asp:parameter name=\"username\" type=\"String\" />
<asp:parameter name=\"pin\" type=\"String\" />
<asp:parameter name=\"email\" type=\"String\" />
<asp:parameter name=\"designation\" type=\"String\" /> ;
<asp:parameter name=\"usertype\" type=\"String\" />
<asp:parameter name=\"userid\" type=\"Int32\" />
</updateparameters>
</asp:sqldatasource>
ConnectionStrings:GloboseMasterConnectionString %>" DeleteCommand="DELETE FROM [Users] WHERE [userid] = @userid" InsertCommand="INSERT INTO [Users] ([username], [pin], [email], [designation], [usertype]) VALUES (@username, @pin, @email, @designation, @usertype)" SelectCommand="SELECT * FROM [Users]" UpdateCommand="UPDATE [Users] SET [username] = @username, [pin] = @pin, [email] = @email, [designation] = @designation, [usertype] = @usertype WHERE [userid] = @userid"> <deleteparameters> <asp:parameter name="userid" type="Int32" /> </deleteparameters> <insertparameters> <asp:parameter name="username" type="String" /> <asp:parameter name="pin" type="String" /> <asp:parameter name="email" type="String" /> <asp:parameter name="designation" type="String" /> <asp:parameter name="usertype" type="String" /> </insertparameters> <updateparameters> <asp:parameter name="username" type="String" /> <asp:parameter name="pin" type="String" /> <asp:parameter name="email" type="String" /> <asp:parameter name="designation" type="String" /> <asp:parameter name="usertype" type="String" /> <asp:parameter name="userid" type="Int32" /> </updateparameters> </asp:sqldatasource>
Updated Code:
Updated Code:
<asp:sqldatasource id="dsUsers" runat="server" xmlns:asp="#unknown">
ConnectionString="<%
这篇关于GridView中的DropDownList值未在数据库中更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文