首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

C# 往SQL数据库安插listbox的值

2014-01-12 
C# 往SQL数据库插入listbox的值各位大哥,求教一个问题:我现在在页面上通过绑定数据库,实现了两个不同listb

C# 往SQL数据库插入listbox的值
各位大哥,求教一个问题:我现在在页面上通过绑定数据库,实现了两个不同listbox之间数据的交替,问题是怎样在C#中获取到“dxListU_R”的值,并且把它插入到数据库中,通过关联“dxCobRole”的值,更新我的另一张SQL表里面相关的“用户角色”的关联信息?
表达或许不是很清楚,望大家见谅个,在线等,诚心求教!HTML代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserRole.aspx.cs" Inherits="Webtest.UserRole.UserRole" %>
<%@ Register assembly="DevExpress.Web.v13.1, Version=13.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxEditors" tagprefix="dx" %>
<%@ Register assembly="DevExpress.Web.v13.1, Version=13.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxHeadline" tagprefix="dx" %>
<%@ Register assembly="DevExpress.Web.v13.1, Version=13.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxPanel" tagprefix="dx" %>
<%@ Register assembly="DevExpress.Web.v13.1, Version=13.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxRoundPanel" tagprefix="dx" %>
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
<%@ Register assembly="DevExpress.Web.v13.1, Version=13.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxDocking" tagprefix="dx" %>
<%@ Register assembly="DevExpress.Web.v13.1, Version=13.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxPopupControl" tagprefix="dx" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
        .auto-style1 {
            width: 95%;
            height: 36px;
        }
        .auto-style2 {
            width: 100px;
        }
        .auto-style3 {
            width: 137px;
        }
        .auto-style5 {
            width: 116px;
        }
    </style>
</head>
<body style="height: 851px; width: 733px">
    <form id="FrmUserRole" runat="server">

<%-- 编写JS验证方法--%>
 <script type="text/javascript"   >
        function AddSelectedItems() {  
            MoveSelectedItems(dxListUser, dxListU_R);
            UpdateButtonState();  
        }  

        function AddAllItems() {  
            MoveAllItems(dxListUser, dxListU_R);
            UpdateButtonState();  
        }  

        function RemoveSelectedItems() {  
            MoveSelectedItems(dxListU_R, dxListUser);
            UpdateButtonState();  
        }  

        function RemoveAllItems() {  
            MoveAllItems(dxListU_R, dxListUser);
            UpdateButtonState();  
        }  

        function MoveSelectedItems(srcListBox, dstListBox) {  
            srcListBox.BeginUpdate();  
            dstListBox.BeginUpdate();  
            var items = srcListBox.GetSelectedItems();  
            for(var i = items.length - 1; i >= 0; i = i - 1) {  
                dstListBox.AddItem(items[i].text, items[i].value);  


                srcListBox.RemoveItem(items[i].index);  
            }  
            srcListBox.EndUpdate();  
            dstListBox.EndUpdate();  
        }  

        function MoveAllItems(srcListBox, dstListBox) {  
            srcListBox.BeginUpdate();  
            var count = srcListBox.GetItemCount();  
            for(var i = 0; i < count; i++) {  
                var item = srcListBox.GetItem(i);  
                dstListBox.AddItem(item.text, item.value);  
            }  
            srcListBox.EndUpdate();  
            srcListBox.ClearItems();  
        }  

        function UpdateButtonState() {
            dxBtnAddAllToRight.SetEnabled(dxListUser.GetItemCount() > 0);
            dxBtnDelAllToLeft.SetEnabled(dxListU_R.GetItemCount() > 0);
            dxBtnAddToRight.SetEnabled(dxListUser.GetSelectedItems().length > 0);
            dxBtnDelToLeft.SetEnabled(dxListU_R.GetSelectedItems().length > 0);
        }

    </script>

    <div style="height: 831px; width: 694px">
    
        <table class="auto-style1">
            <tr>
                <td class="auto-style2">
                    <dx:ASPxButton ID="dxBtnSubmit" runat="server" Height="25px" Text="确定" Width="99px">
                    </dx:ASPxButton>
                </td>
                <td>
                    <dx:ASPxButton ID="dxBtnCancel" runat="server" Text="取消">
                    </dx:ASPxButton>
                </td>
            </tr>
        </table>
        <table class="auto-style1">
            <tr>
                <td class="auto-style5">
                    <dx:ASPxLabel ID="dxlblRole" runat="server" Text="角色">
                    </dx:ASPxLabel>
                </td>
                <td class="auto-style3">
                    <dx:ASPxComboBox ID="dxCobRole" runat="server" DataSourceID="ListRole"     SelectedIndex="0">
                        <Columns>
                            <dx:ListBoxColumn FieldName="RoleName" Caption="角色名称" />
                        </Columns>
                    </dx:ASPxComboBox>


                    <asp:SqlDataSource ID="ListRole" runat="server" ConnectionString="<%$ ConnectionStrings:E-ERP-TEST %>" SelectCommand="SELECT [RoleName], [Id] FROM [T_ERP_Role]"></asp:SqlDataSource>
                </td>
                   <td class="auto-style3">
                  
                </td>
            </tr>
            <tr>
                <td class="auto-style5" rowspan="4">
       
                    <dx:ASPxListBox ID="dxListUser" runat="server" DataSourceID="ListUser" Height="356px" Rows="10" SelectionMode="CheckColumn" TextField="UserName" >
                        <Columns>
                            <dx:ListBoxColumn FieldName="UserName" Caption="用户信息" />
                        </Columns>
                        <ClientSideEvents SelectedIndexChanged="function(s, e) { UpdateButtonState(); }">
                        </ClientSideEvents> 
                    </dx:ASPxListBox>
                    <asp:SqlDataSource ID="ListUser" runat="server" ConnectionString="<%$ ConnectionStrings:E-ERP-TEST %>" SelectCommand="SELECT [UserName], [UserID] FROM [T_ERP_User]">
                    </asp:SqlDataSource>
                </td>
                <td class="auto-style3">
                    <dx:ASPxButton ID="dxBtnAddToRight" runat="server" Text=">>" ClientEnabled="False" ToolTip="Add selected items" ClientInstanceName="dxBtnAddToRight">
                    <ClientSideEvents Click="function(s, e) { AddSelectedItems(); }" />
                    </dx:ASPxButton>
                </td>
                <td class="auto-style3" rowspan="4">
                     <dx:ASPxListBox ID="dxListU_R" runat="server" DataSourceID="ListU_R" Height="361px" SelectionMode="CheckColumn" TextField="RoleName" >
                        <Columns>
                            <dx:ListBoxColumn FieldName="UserName" Caption="已包含用户" />
                        </Columns>
                         <ClientSideEvents SelectedIndexChanged="function(s, e) { UpdateButtonState(); }"></ClientSideEvents>  
                          </dx:ASPxListBox>
                    <asp:SqlDataSource ID="ListU_R" runat="server" ConnectionString="<%$ ConnectionStrings:E-ERP-TEST %>" SelectCommand="SELECT b.UserName, c.RoleName FROM T_ERP_Users_Role AS a INNER JOIN T_ERP_User AS b ON a.User_Id = b.UserID INNER JOIN T_ERP_Role AS c ON a.Role_Id = c.Id WHERE (c.[RoleName] = @RoleName)">


                        <SelectParameters>
                            <asp:FormParameter DefaultValue=" " FormField="dxCobRole" Name="RoleName" Type="Object" Size="250" />
                        </SelectParameters>
                    </asp:SqlDataSource>
                </td>
            </tr>
            <tr>
                <td class="auto-style3">
                    <dx:ASPxButton ID="dxBtnAddAllToRight" runat="server" Text="ALL>>" ToolTip="Add all items" ClientInstanceName="dxBtnAddAllToRight">
                    <ClientSideEvents Click="function(s, e) { AddAllItems(); }" />
                    </dx:ASPxButton>
                </td>
            </tr>
            <tr>
                <td class="auto-style3">
                    <dx:ASPxButton ID="dxBtnDelToLeft" runat="server" Text="<<" ToolTip="Remove selected items" ClientInstanceName="dxBtnDelToLeft">
                    <ClientSideEvents Click="function(s, e) { RemoveSelectedItems(); }" /> 
                    </dx:ASPxButton>
                </td>
            </tr>
            <tr>
                <td class="auto-style3">
                    <dx:ASPxButton ID="dxBtnDelAllToLeft" runat="server" Text="<<ALL" ToolTip="Remove all items" ClientInstanceName="dxBtnDelAllToLeft">
                    <ClientSideEvents Click="function(s, e) { RemoveAllItems(); }" />
                    </dx:ASPxButton>
                </td>
            </tr>
        </table>
        <br />
    </div>
    </form>
</body>
</html>


[解决办法]
我不是大哥,所以帮不了你!
[解决办法]
太长了。。。。。。。。。。。。。。
[解决办法]
listbox帮顶Datasource数据源后item交换可以用下面的类
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;

namespace eAbaxReport
{
    //用于统一处理两个List类型控件之间互相转移Items
    public  class AddRemoveItem<T>


    {
        //从一个ListBox中删除Items
        public  void RemoveItems(ListBox lstBox, IEnumerable items)
        {
            if (typeof(T) == typeof(DataRow))
            {
                if (lstBox.Items.Count > 0)
                {
                    DataTable dt = ((DataTable)lstBox.DataSource);
                    DataTable newDt = dt.Clone();
                    bool flag = false;
                    //因为直接删除DataRow会保存,所以用这样丑陋的方式处理了
                    foreach (DataRow dr in dt.Rows)
                    {
                        foreach (DataRowView item in items)
                        {
                            if (dr["numID"].ToString().Equals(item.Row["numID"].ToString()))
                            {
                                flag = true;
                                break;
                            }
                            else
                                flag = false;
                        }
                        if (!flag)
                            newDt.Rows.Add(dr.ItemArray);
                        else
                            continue;
                    }
                    lstBox.DataSource = newDt;
                }
            }
            else
            {
                List<T> lst = new List<T>();
                lst.AddRange((List<T>)lstBox.DataSource);
                lst.RemoveAll(delegate(T item1)
                {
                    foreach (T item2 in items)
                    {
                        if (item1.Equals(item2))
                            return true;


                    }
                    return false;
                });
                lstBox.DataSource = lst;
            }
        }
        public string Test(ListBox lstBox, IEnumerable items)
        {
            string str = string.Empty;
            if (typeof(T) == typeof(DataRow))
            {
                if (lstBox.Items.Count > 0)
                {
                    
                    DataTable dt = ((DataTable)lstBox.DataSource);
                    DataTable newDt = dt.Clone();                  
                    //因为直接删除DataRow会保存,所以用这样丑陋的方式处理了
                    foreach (DataRow dr in dt.Rows)
                    {
                        str += dr["showName"].ToString() + "
[解决办法]
";
                    }
                    foreach (DataRowView item in items)
                    {
                        str += item.Row["showName"].ToString() + "
[解决办法]
";
                    }
                        
                   
                }
            }
            return str;
           
        }
        //向一个ListBox中添加Items
        public  void AddItems(ListBox lstBox, IEnumerable items)
        {
            if (typeof(T) == typeof(DataRow))
            {
                DataTable dt = null;
                foreach (object item in items)
                {
                    if (item is DataRowView)
                        dt = ((DataRowView)item).Row.Table.Clone();
                    if (item is DataRow)
                        dt = ((DataRow)item).Table.Clone();
                    break;
                }
                if (lstBox.DataSource != null)


                    dt = ((DataTable)lstBox.DataSource).Copy();
                foreach (object item in items)
                {
                    if (item is DataRowView)
                        dt.Rows.Add(((DataRowView)item).Row.ItemArray);
                    if (item is DataRow)
                        dt.Rows.Add(((DataRow)item).ItemArray);
                }
                lstBox.DataSource = dt;              
            }
            else
            {
                List<T> lst = new List<T>();
                if (lstBox.DataSource != null)
                    lst.AddRange((List<T>)lstBox.DataSource);
                foreach (T item in items)
                {
                    lst.Add(item);
                }
                lstBox.DataSource = lst;
            }
        }
        //将ListBox1的选定项转移到ListBox2中,并从ListBox1中去除
        public  void Move(ListBox lstBox1, ListBox lstBox2)
        {
            if (lstBox1.SelectedItems.Count > 0)
            {
                AddItems(lstBox2, lstBox1.SelectedItems);
                RemoveItems(lstBox1, lstBox1.SelectedItems);
            }
        }
        //将整个lstBox1的项转移到ListBox2中,并清空ListBox1
        public  void MoveAll(ListBox lstBox1, ListBox lstBox2)
        {
            if (typeof(T) == typeof(DataRow))
            {
                DataTable dt = (DataTable)lstBox1.DataSource;
                AddItems(lstBox2, dt.Rows);
                lstBox1.DataSource = dt.Clone();
            }
            else
            {
                AddItems(lstBox2, (List<T>)lstBox1.DataSource);
                lstBox1.DataSource = new List<T>();
            }
        }
        /// <summary>
        /// lstBox2克隆lstBox1的值
        /// </summary>
        /// <param name="lstBox1"></param>
        /// <param name="lstBox2"></param>
        public void CloneListBoxItems(ListBox lstBox1, ListBox lstBox2)


        {
            if (typeof(T) == typeof(DataRow))
            {
                DataTable dt = (DataTable)lstBox1.DataSource;
                AddItems(lstBox2, dt.Rows);
                //lstBox1.DataSource = dt.Clone();
            }
            else
            {
                AddItems(lstBox2, (List<T>)lstBox1.DataSource);
                lstBox1.DataSource = new List<T>();
            }
        }
        /// <summary>
        /// 交换两个选项的位置
        /// </summary>
        /// <param name="lstBox"></param>
        /// <param name="itemIndex1">交换索引1</param>
        /// <param name="itemIndex2">交换索引2</param>
        public void ListItemSwap(ListBox lstBox, int itemIndex1, int itemIndex2)
        {
            object temp = lstBox.Items[itemIndex2];
            lstBox.Items[itemIndex2] = lstBox.Items[itemIndex1];
            lstBox.Items[itemIndex1] = temp;
        }
        /// <summary>
        ///  交换两个选项的位置(修改数据源)
        /// </summary>
        /// <param name="lstBox"></param>
        /// <param name="rowIndex1">选中项索引</param>
        /// <param name="rowIndex2">交换后索引</param>

        public void ItemUpAndDown(ListBox lstBox, int rowIndex1, int rowIndex2)
        {

            DataTable dt = (DataTable)lstBox.DataSource;
            DataTable newDt = dt.Clone();
            int columnCount = dt.Columns.Count;
            newDt.Rows.Add();
            newDt.Rows.Add();
            for (int i = 0; i < columnCount; i++)
            {
                newDt.Rows[0][i] = dt.Rows[rowIndex2][i];
                newDt.Rows[1][i] = dt.Rows[rowIndex1][i];
            }
            for (int i = 0; i < columnCount; i++)
            {

                dt.Rows[rowIndex2][i] = newDt.Rows[1][i];
                dt.Rows[rowIndex1][i] = newDt.Rows[0][i];
            }
            lstBox.DataSource = dt;
        }


    }    
}




//调用方法!
 private void btnGroupRight_Click(object sender, EventArgs e)
        {
            GroupRight();
        }
 public void GroupRight()
        {
            ListBox.SelectedObjectCollection items = listBoxGroupLeft.SelectedItems;


            DataRowView rowView = (DataRowView)items[0];
            string fieldType = rowView["fieldType"].ToString();
            if (!fieldType.Equals("num"))
            {
                addRemoveItems.AddItems(listBoxGroupRight, items);
                addRemoveItems.RemoveItems(listBoxGroupLeft, items);
                EnableGroupBtn();
            }
            else
            { MessageBox.Show(this, "该字段分组没有意义!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); }
        }


[解决办法]
围观大神解决问题
[解决办法]
引用:
Quote: 引用:


这位大哥,首先谢谢你的热心帮助,再是我想说:我这个是C#, WEB端的,您这是winform,能适用吗?还有,两个listbox控件和那个下拉框的值与SQL绑定显示数据了,并且两个listbox之间的值得交互也已经通过页面方法实现了,现在的问题就是怎样把我从“dxListU_R”这个listbox里添加或删除的值与SQL数据实现绑定?还是说,只能通过后台C#的绑定才能实现“dxListU_R”这个listbox里添加或删除的值与SQL数据实现绑定?

求教,谢谢!
web应该也适用!

热点排行