既是下拉列表的变化?

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
在ASP网页上有2个DropDownList框,它们都绑定到数据库,每个数据库到另一个表。我正在使用linq到sql从表中获取信息并显示结果一些文本框.....问题是当我从下拉下拉下拉下来选择一个项目时似乎从数据库中的两个表中获取信息......我有下面的下拉列表框的代码....代码是下拉框的所选索引更改事件中

这是为客户的下拉列表
using (DB_ClassDataContext myDB = new DB_ClassDataContext(conn))
            {
                var cust = from c in myDB.Customers
                           where c.Company_Name == DropDownList3.Text
                           select new
                           {
                               customer = c.Company_Name,
                               contact = c.Contact_Name,
                               phone = c.Bus_Phone,
                               address = c.Address
                           };


                foreach (var item in cust)
                {
                    txtContactName.Text = item.contact;
                    txtPhone.Text = item.phone;
                    txtCompanyAddress.Text = item.address;
                }
            }


这是库存项目编号的下拉列表

 using (DB_ClassDataContext Inv = new DB_ClassDataContext(conn))
            {
                var inventory = from inv in Inv.Inventories
                                where inv.ItemNumber == DropDownList2.Text
                                select new
                                {
                                    itemName = inv.ItemName,
                                    itemDesc = inv.ItemDesc,
                                    itemPrice = inv.ItemPrice
                                };


                foreach(库存中的var项目)
                {
                    txtitemname.text = item.itemname;
                    txtitemdesc.text = item.itemdesc;
                    txtitemprice.text = item.itemprice.tostring();
                }
            }


感谢您的任何帮助

- inkedgfx.
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
当我从下拉列表中选择一个项目时,似乎从数据库中的两个表中获取信息
你能澄清你的意思吗?第二次思考,也许你的意思是在回发后调用事件处理程序? ASP.NET. DropDownList始终触发选择indexchanged | nsilverbullet.

此外,关于此部分的评论:
foreach(库存中的var项目)
{
txtitemname.text = item.itemname;
txtitemdesc.text = item.itemdesc;
txtitemprice.text = item.itemprice.tostring();
}
由于这些控件只能显示一个项目,因此你为什么循环?您应该将LINQ表达式限制为.first或.firstordFault只返回一个项目并仅将其分配给TextBoxes。
 

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
好的......是的,我会尝试澄清一下,当我从一个下拉列表中选择一个项目时,它会获得所选项目的信息......但如果有人说"100-101"项目编号在项目下降中,然后它将返回项目编号下拉的信息......这不会归因于Sence,因为该索引从未更改为项目下拉列表......如果这使得任何Sence!

P.S我会改变要使用的代码.first或.firstordfault ......谢谢你指出这个!

- inkedgfx.
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
但如果有人说"100-101"项目下拉列表中的项目编号,然后它将返回项目编号下拉项的信息
对不起,我不明白你。
 

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
好的..我更详细地解释....

我在页面上有2个下拉列表框......一个是客户列表,另一个是用于库存项目列表....

dropdownlist_example.jpg.jpg.

因此,当我从客户列表中选择客户时,它将获得该客户的信息,并填写具有信息的文本框......但是发生了什么,就是我选择一个客户在项目下拉列表中项目的信息还填写了项目textboxes,它不应该做......直到我从项目下拉列表中选择一个项目......因为项目下拉索引不改变......所以为什么它会填写信息项目在客户下拉列表中更改索引时?

我希望这有助于解释它更好

感谢您的帮助

- inkedgfx.
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
你有没有阅读我在帖子2中链接的文章?你有没有调试回发期间发生的事情?

由于每个更改也查询数据库,因此您是否考虑过多个UpdatePanel的页面上的部分回发?
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
好的......我已经使用DropdownList添加了一个更新面板,并将其设置为。正常工作现在.....所以一个问题解决了......现在还有另一个问题......在我添加更新面板之前,为什么我不认为更新面板导致这个问题..... 。当我从客户下拉列表中选择一个物品时,一切都按预期工作......但是当我从项目编号下拉下拉时选择一个项目时,没有任何事情发生..我已经调试并在DropDownList的SelectedIndexchanged事件中调试并设置一个断点...... ..当我运行代码时,断点永远不会达到......不确定为什么这将是.....当我选择客户时,将解雇客户下拉的事件.....让我知道如果你需要我粘贴代码!

谢谢你的帮助到目前为止.....

- inkedgfx.
 

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
**更新**

我在所选索引中设置另一个断点更改了项目编号DropdownList的事件....并踩到它...似乎事件正在触发,但isnt设置textbox文本

以下是Seleceted Index更改事件的代码

    protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
        {
            using (DB_ClassDataContext Inv = new DB_ClassDataContext(conn))
            {
                var inventory = from inv in Inv.Inventories
                                where inv.ItemNumber == DropDownList2.Text
                                select new
                                {
                                    itemName = inv.ItemName,
                                    itemDesc = inv.ItemDesc,
                                    itemPrice = inv.ItemPrice
                                };


                foreach(库存中的var项目)
                {
                    txtitemname.text = item.itemname;
                    txtitemdesc.text = item.itemdesc;
                    txtitemprice.text = item.itemprice.tostring();
                }
            }
            
        }


我知道我不应该使用foreach循环来获取细节"var inventory"因为库存中只有一个项目,但我无法弄清楚如何使用.default()或.firstordfault()

当我步踏上这个代码时,我可以看到txtitemname.text实际上它应该是来自数据库的值以及其他文本字段......但是当所选索引在下拉列表中更改时,网页无法更新......任何想法为什么这是什么?

- inkedgfx.
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
我知道我不应该使用foreach循环来获取细节"var inventory"因为库存中只有一个项目,但我无法弄清楚如何使用.default()或.firstordfault()
查看示例代码:
枚举
枚举.FirstordFault.
当我步踏上这个代码时,我可以看到txtitemname.text实际上它应该是来自数据库的值以及其他文本字段......但是当所选索引在下拉列表中更改时,网页无法更新......任何想法为什么这是什么?
您现在在UpdatePanel中有DDL,那些文本盒也在同一面板吗?如果不是它们不会包含在该部分更新中。

如果将它们放在同样的updatePanel中,则可以将它们放在一个不同的UpdatePanel中,该UpdatePanel在需要更新时为该面板提供UpdateMode =条件和调用更新方法,或者只是将DDL.SelectedIndexChangeD向其他面板触发集合。
 

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
当我将文本框添加到更新面板时,我丢失下拉列表中的项目... DropdownList是Databound到数据库中的项目表......如果我没有updatePanel中的文本框所有这些项目都在dropdownlist ...奇怪!!!!!

- inkedgfx.
 

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
此外,我不太确定如何使用.first()与我拥有的东西....如果我有一系列的ints,我可以看到它如何工作......但是我有一个带有3个属性的对象

    protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
        {
            using (DB_ClassDataContext Inv = new DB_ClassDataContext(conn))
            {
                var inventory = from inv in Inv.Inventories
                                where inv.ItemNumber == DropDownList2.Text
                                select new
                                {
                                    itemName = inv.ItemName,
                                    itemDesc = inv.ItemDesc,
                                    itemPrice = inv.ItemPrice
                                };


                foreach(库存中的var项目)
                {
                    txtitemname.text = item.itemname;
                    txtitemdesc.text = item.itemdesc;
                    txtitemprice.text = item.itemprice.tostring();
                }
            }
            
        }


如何获取itemname,itemdesc和itemprice .first()?

再次感谢您的帮助!

- inkedgfx.
 

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
好的..用你的帮助,弄清楚了如何使用。但是,仍然没有更新文本字段,我把它们与下拉列表相同的更新面板....下面是HTML代码

HTML:
<div class="panel-body">                          
  <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">                             
   <ContentTemplate>                             
     <div class="col-md-4">                              
       <div class="input-group left-margin-20">                              
        <span class="input-group-addon" id="basic-addon13">Item Number :</span>                                                                       
       <asp:DropDownList ID="DropDownList2" runat="server" CssClass="form-control" Width="100px" DataSourceID="SqlDataSource3" DataTextField="ItemNumber" DataValueField="ItemNumber" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged" OnTextChanged="DropDownList2_TextChanged" AutoPostBack="true">                                                                            
  </asp:DropDownList>                                       
    <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="SELECT [ItemNumber] FROM [Inventory]">  </asp:SqlDataSource>                               
 </div>                                
  <div class="input-group left-margin-20">                                 
  <span class="input-group-addon" id="basic-addon9">Item Desc:</span>                                  
   <asp:TextBox ID="txtItemDesc" runat="server" CssClass="form-control" Height="40px" Width="150px" TextMode="MultiLine"></asp:TextBox>                               
    </div>                                 
     <asp:Button ID="btnAddNewItem" CssClass="btn btn-default left-margin-30" runat="server" Text="Add New Item" OnClick="btnAddNewItem_Click" />                                 
    <asp:Label ID="lblWarning" runat="server" Text="Error Adding New Item!" Visible="False" BackColor="#FF9900" BorderColor="#FF9900" Font-Bold="True"></asp:Label>                         </div>                                                      
    <div class="col-md-4">                                 
     <div class="input-group left-margin-20">                                    
       <span class="input-group-addon" id="basic-addon14">Item Name :</span>                                    
       <asp:TextBox ID="txtItemName" runat="server" CssClass="form-control" Height="40px" Width="170" TextMode="SingleLine"></asp:TextBox>                                 
    </div>
     <div class="input-group left-margin-20">                                   
      <span class="input-group-addon" id="basic-addon11">Item Price :</span>                                   
      <asp:TextBox ID="txtItemPrice" runat="server" CssClass="form-control" Height="40px" Width="100px" TextMode="SingleLine"></asp:TextBox>                                   
      </div>                            
   </div>                             
    <div class="col-md-4">                               
     <div class="input-group">                                    
      <span class="input-group-addon" id="basic-addon10">Item Qty :</span>                                    
      <asp:TextBox ID="txtItemQty" runat="server" CssClass="form-control" Height="40px" Width="150" TextMode="SingleLine"></asp:TextBox>                               
    </div>                                                              
  </div>                            
 </ContentTemplate>                                    
  <Triggers>                                       
    <asp:AsyncPostBackTrigger ControlID="DropDownList2" EventName="SelectedIndexChanged" />                                   
  </Triggers>                          
 </asp:UpdatePanel>                                
</div>

以下是所选索引更改事件代码

   protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
        {
            using (DB_ClassDataContext Inv = new DB_ClassDataContext(conn))
            {
                var inventory = (from inv in Inv.Inventories
                                where inv.ItemNumber == DropDownList2.Text
                                select new
                                {
                                    itemName = inv.ItemName,
                                    itemDesc = inv.ItemDesc,
                                    itemPrice = inv.ItemPrice
                                }).First();




                var itemname = inventory.itemName;
                var itemdesc = inventory.itemDesc;
                var itemprice = inventory.itemPrice;


                txtItemName.Text = itemname;
                txtItemDesc.Text = itemdesc;
                txtItemPrice.Text = "$" + itemprice.ToString();
               
            }
            
        }


我踏上了这个活动,一切似乎都在预期工作.....希望你能看到它为什么不起作用......

谢谢你

- inkedgfx.
 
Last edited:

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
我是个白痴......问题是"UpdateMode"在UpdatePanel中..我已经设置为"Always" and it needs to be "Conditional"所以现在一切都在工作....谢谢你的帮助..我有助于你的帮助了!

- inkedgfx.
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
这很奇怪,我确定我在用DDL内部UpdatePanel中测试时,我始终有更新程序=。也许是因为你也为此添加了触发器? UpdatePanel内部DDL(自动optBack)的正则回发应在不添加触发的情况下导致更新。当我在POST 11中提到这一点时,它与一个DDL触发不同的UpdatePanel而不是自己的。
 

InkedGFX.

众所周知的成员
加入
2013年2月2日
消息
142
编程经验
Beginner
我有所选索引的触发器集更改了....不确定我是否需要触发器,或者不确定......但是现在工作!

感谢你的帮助!

- inkedgfx.
 
最佳 底部