Member 12605293 Ответов: 1

Как вставить значения на основе запятых в текстовое поле, несколько значений, выбранных из выпадающего списка


Привет
Я работаю над asp gridview и при выборе нескольких значений из выпадающего списка с помощью флажков хочу получить значения в поле метки, разделенные запятой ...

Что я уже пробовал:

protected void dd2_selectedindexchanged(object sender, EventArgs e)
       {
           DropDownList DropDownList1 = sender as DropDownList;
           foreach (GridViewRow row in gvDetails.Rows)
           {
               Control ctrl = row.FindControl("DropDownList2") as DropDownList;
               Control ctr = row.FindControl("Label4") as Label;
               Label Label2 = row.FindControl("Label4") as Label;
               Label2.Text += DropDownList1.SelectedValue + ", ";




           }
       }

Bryian Tan

Используете ли вы сторонний выпадающий элемент управления?

Member 12605293

Привет, Брайан.
Это не третья сторона

Richard Deeming

Если только вас не зовут Дэвид Стутц, Загрузочный Множественный[^] есть совершенно определенно сторонний компонент.

[no name]

С какой проблемой вы здесь столкнулись?.

Member 12605293

Привет Винод
Спасибо за ваш ответ.Выпадающий список работает хорошо, я могу выбрать несколько вариантов с помощью флажка jquery, но при вставке вставляется только одно значение, а также выбранное значение

Member 12605293

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css"
    rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>
<link href="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/css/bootstrap-multiselect.css" rel="stylesheet" type="text/css" />
<script src="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/js/bootstrap-multiselect.js" type="text/javascript"></script>
<script type="text/javascript">


    $(function () {
        $('[id*=DropDownList2],[id*=DropDownList3]').multiselect({
            includeAllOption: true
        });
    });
   
    
   
</script>



<asp:TemplateField HeaderText="Skills">  
                            <edititemtemplate>  
                                <asp:DropDownList ID="DropDownList2" multiple="multiple" runat="server" >  
  
                                     
                                  
                              
                            <itemtemplate>  
                                <asp:Label ID="Label4" runat="server" Text='<%#Eval("Departmentid") %>' >  
                                  
                             
                
                <footertemplate>
                            <asp:DropDownList ID="DropDownList3" multiple="multiple"   runat="server" OnSelectedIndexChanged="dd1_selectedindexchanged"  >  
  
                                     
                                 
                            
                         
                          </pre

1 Ответов

Рейтинг:
12

Karthik_Mahalingam

пробовать

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css"
        rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>
    <link href="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/css/bootstrap-multiselect.css" rel="stylesheet" type="text/css" />
    <script src="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/js/bootstrap-multiselect.js" type="text/javascript"></script>
    <script type="text/javascript">


        $(function () {
            $('.classDropDownList2').multiselect({
                includeAllOption: true,
                onChange: function (a,b,c) {
                    var val = a.parent().val();
                    var text = '';
                    if (val)
                        text = val.join(',');
                    $(a).closest('tr').find('.classsLabel4').text(text);

                }
            });
        });



    </script>


</head>
<body>
    <form id="form1" runat="server">


        <asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateField>
                    <HeaderTemplate>
                        Column1 
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:DropDownList CssClass="classDropDownList2" ID="DropDownList2" multiple="multiple" runat="server">
                            <asp:ListItem Text="-select-" Value="" />
                            <asp:ListItem Text="one" Value="1" />
                            <asp:ListItem Text="two" Value="2" />
                            <asp:ListItem Text="three" Value="3" />
                        </asp:DropDownList>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate>
                        Column2
                    </HeaderTemplate>
                    <ItemTemplate>

                        <asp:Label CssClass="classsLabel4" ID="Label4" runat="server" Text='<%#Eval("Departmentid") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

            </Columns>
        </asp:GridView>


    </form>
</body>
</html>



protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataTable dt = GetDataTable();
                gv.DataSource = dt;
                gv.DataBind();
            }
        }


Member 12605293

Привет Картик
Спасибо за код Картик. Это не работает.Мне прислать свои фрагменты??

Karthik_Mahalingam

создайте новую страницу и запустите этот код

protected void Page_Load(отправитель объекта, EventArgs e)
{
if (! IsPostBack)
{
DataTable dt = GetDataTable();
гв.Источник данных = ДТ;
гв.Привязку();
}
}

private static DataTable GetDataTable()
{
DataTable dt = новый DataTable();
ДТ.Столбцы.Добавить ("Departmentid");
ДТ.Столбцы.Добавить ("Column2");
ДТ.Столбцы.Добавить ("Column3");
dt. Rows. Add ("яблоко", "муравей", " животное");
ДТ.Строк.Добавить("летучая мышь", "мячик", "бычок");
ДТ.Строк.Добавить("кошка", "звонок", "кон");
ДТ.Строк.Добавить("собака", "кукла", "кости");
возврат dt;
}

Karthik_Mahalingam

используйте класс, не используйте идентификатор

Member 12605293

Привет Картик
вот мой код


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css"
        rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>
    <link href="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/css/bootstrap-multiselect.css" rel="stylesheet" type="text/css" />
    <script src="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/js/bootstrap-multiselect.js" type="text/javascript"></script>
    <script type="text/javascript">


        $(function () {
            $('[id*=DropDownList2],[id*=DropDownList3]').multiselect({
                includeAllOption: true,
                onChange: function (a, b, c) {
                    var val = a.parent().val();
                    var text = '';
                    if (val)
                        text = val.join(',');
                    $(a).closest('div').find('.Label4').text(text);

                }
            });
        });
     
</script>   
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView ID="gvDetails" style="background-color:lightgreen;     border-collapse: collapse;
    background-color: lightgreen;
    margin-top: -53px;" DataKeyNames="empid,name" runat="server"
                
                AutoGenerateColumns="false" HeaderStyle-BackColor="#61A6F8"
                ShowFooter="true" HeaderStyle-Font-Bold="true" HeaderStyle-ForeColor="White"
                CellPadding="10" CellSpacing="0"
                AllowPaging="true" PageSize="5"
                AllowSorting="True" OnRowDataBound="gvDetails_OnRowDataBound"
                OnRowCancelingEdit="gvDetails_RowCancelingEdit"
                OnRowDeleting="gvDetails_RowDeleting" OnRowEditing="gvDetails_RowEditing"
                OnRowUpdating="gvDetails_RowUpdating"
                OnRowCommand="gvDetails_RowCommand">

        <Columns >
                    <asp:TemplateField  HeaderText="EmployeeID">
                        <ItemTemplate>
                            <asp:Label ID="lblempid" runat="server" class="clsempid"
                                Text='<%# Eval("empid")%>'></asp:Label>
                        </ItemTemplate>
                        <FooterTemplate>
                            <asp:TextBox ID="txtempid" 
                                MaxLength="5" runat="server"></asp:TextBox>
                            
                        </FooterTemplate>
                    </asp:TemplateField>



                    <asp:TemplateField HeaderText="EmployeeName">
                        <EditItemTemplate>
                            <asp:TextBox ID="txtempname" runat="server"   Text='<%#Eval("name") %>' />
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblempname" runat="server"  Text='<%#Eval("name") %>' />
                        </ItemTemplate>
                        <FooterTemplate>
                            <asp:TextBox ID="txtempname1" runat="server"  AutoPostBack="true"  onkeypress="hidedialog(this)" />
                            
                        </FooterTemplate>
                    </asp:TemplateField>
            <asp:TemplateField HeaderText="Skills">  
                            <EditItemTemplate>  
                                <asp:DropDownList ID="DropDownList2" multiple="multiple" runat="server" >

Karthik_Mahalingam

используйте класс, не используйте идентификатор

Member 12605293

Привет да, я перешел с tr на div в скрипте, При выборе значений запрос работает хорошо 1,2,3..но при вставке записи с помощью кнопки он сохраняет первое значение в базе данных, а также показывает в метке.

Karthik_Mahalingam

вам придется отлаживать и проверять.
попробуйте сохранить его в hiddenfield и попасть на сервер.
так как обновление значения в метке не может быть достигнуто на сервере.

Member 12605293

<asp:TemplateField HeaderText="Skills">  
                            <EditItemTemplate>  
                                <asp:DropDownList ID="DropDownList2" multiple="multiple" runat="server" >  
  
                                     
                                </asp:DropDownList>  
                            </EditItemTemplate>  
                            

                                 <ItemTemplate>

                        <asp:Label CssClass="classsLabel4" ID="Label4" runat="server" Text='<%#Eval("Departmentid") %>'></asp:Label>
                    </ItemTemplate>
                                
                
                <FooterTemplate>
                            <asp:DropDownList ID="DropDownList3" multiple="multiple"   runat="server" OnSelectedIndexChanged="dd1_selectedindexchanged" >  
  
                                     
                                </asp:DropDownList> 
                            
                        </FooterTemplate> 
                        </asp:TemplateField>  


             <asp:TemplateField HeaderText="Edit/Delete" HeaderStyle-Width="5%">
                        <EditItemTemplate>
                            <asp:ImageButton ID="imgbtnUpdate" onkeypress="return (function (a,b,c))"  CommandName="Update" runat="server" ImageUrl="~/Images/update.png" ToolTip="Update" Height="20px" Width="20px" />
                            <asp:ImageButton ID="imgbtnCancel" runat="server" CommandName="Cancel" ImageUrl="~/Images/cancel.png" ToolTip="Cancel" Height="20px" Width="20px" />
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:ImageButton ID="imgbtnEdit" onkeypress="return (function (a,b,c))" CommandName="Edit"  runat="server" ImageUrl="~/Images/Insert.png" ToolTip="Edit" Height="20px" Width="20px" />
                            <asp:ImageButton ID="imgbtnDelete" CommandName="Delete" Text="Edit" runat="server" ImageUrl="~/Images/delete.png" ToolTip="Delete" Height="10px" Width="10px" />
                        </ItemTemplate>
                        <FooterTemplate>
                            <asp:ImageButton ID="imgbtnAdd" onkeypress="return (function (a,b,c))"  runat="server" ImageUrl="~/Images/Add.png" CommandName="Add" Width="20px" Height="20px" ToolTip="Add new User"  OnClientClick="GetGridFooterRowvalues()" />
                        </FooterTemplate>
                    </asp:TemplateField>

            </Columns>

Member 12605293

А также при добавлении или редактировании предыдущей метки отображаются выбранные в данный момент значения.

<asp:TemplateField HeaderText="Skills">  
                            <EditItemTemplate>  
                                <asp:DropDownList ID="DropDownList2" multiple="multiple" runat="server" >  
  
                                     
                                </asp:DropDownList>  
                            </EditItemTemplate>  
                            

                                 <ItemTemplate>

                        <asp:Label CssClass="classsLabel4" ID="Label4" runat="server" Text='<%#Eval("Departmentid") %>'></asp:Label>
                    </ItemTemplate>
                                
                
                <FooterTemplate>
                            <asp:DropDownList ID="DropDownList3" multiple="multiple"   runat="server" OnSelectedIndexChanged="dd1_selectedindexchanged" >  
  
                                     
                                </asp:DropDownList> 
                            
                        </FooterTemplate> 
                        </asp:TemplateField>  

Karthik_Mahalingam

отладьте его.
используйте отладчик javascript,
точка останова c#.

Member 12605293

ОК Картик

            <ItemTemplate>

                        <asp:Label  ID="Label4" runat="server" CssClass="classsLabel4" Text='<%#Eval("Departmentid") %>'></asp:Label>
                                     <asp:HiddenField ID="hdnResultValue" Value="0" runat="server" />
                    </ItemTemplate>

Member 12605293

Привет Картик
Я отладил и увидел значения, которые он показывает (1, 'abc', 1), но я выбрал 3 значения из флажка

Member 12605293

Используя класс label, поскольку его идентификатор объявлен в jquery, он показывает те же значения ,что и если я выберу 2 и 3, то он будет отражен во всей строке как 2

Karthik_Mahalingam

ладно.

Member 12605293

Как заставить преодолеть этот вопрос?

Karthik_Mahalingam

найти в контексте строки tr

Member 12605293

Привет Картик
доброе утро

Karthik_Mahalingam

ГМ

Member 12605293

Привет Картик
Как использовать Linq to sql в проекте?Использовать в смысле уменьшения строке запроса использования в код с использованием объектов

Karthik_Mahalingam

зачем вам нужен Linq to SQL?
это mvc?

Member 12605293

Нет, но я соперничал с несколькими сайтами использования Linq to sql в codebehind только для того, чтобы научиться использовать..Пожалуйста, дайте мне ваше предложение.Я не знаю abt mvc

Karthik_Mahalingam

если вы используете ASP, это бесполезно. это сделает приложение более сложным.
я лично предлагаю не использовать linq to sql, а написать несколько вспомогательных методов для достижения того же самого.
Позже будет трудно изменить код.

Member 12605293

Спасибо, Картик.
А как насчет использования Entity Framework?

Karthik_Mahalingam

Я не использовал до сих пор, я всегда работаю на ядре, ADO.net, мне не нравится обертка,

Karthik_Mahalingam

улыбательные они будут преобразовываться в объект DataTable в список IEnumerable, вот и все.
этого мы можем достичь, используя вспомогательный метод.

Member 12605293

хорошо сэр

Karthik_Mahalingam

видите ли, все зависит от проекта и потребностей.

Member 12605293

ладно

Member 12605293

Является ли Linq связан с MVC?

Karthik_Mahalingam

Linq-это родственный c#, который можно использовать на любой платформе.

Karthik_Mahalingam

Я думаю, что вы должны начать изучать c#

Member 12605293

- Хорошо, Сэр.Таким образом, мы также можем использовать в vb

Karthik_Mahalingam

я вышел из vb, использовал его 5 лет назад :)

концепция одна и та же, но синтаксис отличается

Member 12605293

- Хорошо, Сэр.