GridView中的DropDownList值未在数据库中更新 [英] DropDownList Value in GridView Not Updating in Database

查看:62
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆