Frågan 19 nov. 2010 19:52 #1 Hej
Jag tänker att använda en dropdownlist där värdet jag väljer skall läggas in i två st textboxar.
************************************
Dropdownlist - hämtar från accessdatabas:
mavgift_id: 1
mavgift_namn: Familjekort
mavgift_pris: 1100 kr
****************************
Textbox1 = mavgift_namn och Textbox2 = mavgift_pris
Hittade denna koden på nätet:
Men nu kommer mavgift_namn i textbox2 också! Jag vill ha mavgift_pris istället
Här kommer koden:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="dropdwonlist.aspx.cs" Inherits="dropdwonlist" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="SelectedIndexChanged" DataSourceID="AccessDataSource1"
DataTextField="mavgift_namn" DataValueField="mavgift_namn">
</asp:DropDownList>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="~/App_Data/medlemBK.mdb"
SelectCommand="SELECT [mavgift_namn], [mavgift_pris] FROM [MAVGIFT]">
</asp:AccessDataSource>
<asp:TextBox ID="TextBox1" runat="server" />
<asp:TextBox ID="TextBox2" runat="server" />
</asp:Content>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class dropdwonlist : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList dropDownList = (DropDownList)sender;
if (dropDownList.SelectedValue == "Other")
{
TextBox1.Enabled = true;
TextBox1.Text = string.Empty;
TextBox2.Enabled = true;
TextBox2.Text = string.Empty;
}
else
{
TextBox1.Enabled = false;
TextBox1.Text = dropDownList.SelectedValue;
TextBox2.Enabled = false;
TextBox2.Text = dropDownList.SelectedValue;
}
}
}
Testa byt ut följande delar till:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="SelectedIndexChanged" DataSourceID="AccessDataSource1"
DataTextField="mavgift_pris" DataValueField="mavgift_namn">
else
{
TextBox1.Enabled = false;
TextBox1.Text = dropDownList.SelectedValue;
TextBox2.Enabled = false;
TextBox2.Text = dropDownList.SelectedItem.Text;
}
Dropdownlist där värdet jag väljer hamnar i textbox
Hej
Tack det funkar :)
Men när jag försöker att använda denna kod i en Formview får jag ett felmeddelande:
Kompilatorfelmeddelande: CS0103: Namnet avgift_namnTextBox finns inte i den aktuella kontexten
RAD: 35
Källfel:
Rad 33: if (dropDownlist.SelectedValue == "Other")
Rad 34: {
Rad 35: avgift_namnTextBox.Enabled = true;
Rad 36: avgift_namnTextBox.Text = string.Empty;
Rad 37: avgift_prisTextBox.Enabled = true;
Här kommer min kod:
<asp:FormView ID="FormView3" runat="server" DataKeyNames="faktura_id"
DataSourceID="SkapaFaktura" DefaultMode="Insert" Width="687px">
<InsertItemTemplate>
<table style="width:100%;">
<tr>
<td class="style1">
<strong>Medlem</strong></td>
<td>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="ListamedlemsID" DataTextField="Expr1" DataValueField="medlem_id"
Text='<%# Bind("medlem_id") %>'>
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="style1">
<strong>Typ av medlemsavgift</strong></td>
<td>
<asp:DropDownList ID="DropDownList2" runat="server" OnSelectedIndexChanged="SelectedIndexChanged"
DataSourceID="Listamedlemsavgift" DataTextField="mavgift_namn"
DataValueField="mavgift_id">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="style1">
<strong>Typ av medlemsavgift</strong></td>
<td>
<asp:TextBox ID="avgift_namnTextBox" runat="server"
Text='<%# Bind("avgift_namn") %>' />
</td>
</tr>
<tr>
<td class="style1">
<strong>Typ av pris</strong></td>
<td>
<asp:TextBox ID="avgift_prisTextBox" runat="server"
Text='<%# Bind("avgift_pris") %>' />
</td>
</tr>
<tr>
<td class="style1">
<strong>Betalt medlemsavgift</strong></td>
<td>
<asp:CheckBox ID="faktura_betaltCheckBox" runat="server"
Checked='<%# Bind("faktura_betalt") %>' />
</td>
</tr>
</table>
<br />
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True"
CommandName="Insert" Text="Insert" />
<asp:LinkButton ID="InsertCancelButton" runat="server"
CausesValidation="False" CommandName="Cancel" Text="Cancel" />
</InsertItemTemplate>
</asp:FormView>
*******************************************************
protected void SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList dropDownlist = (DropDownList)sender;
if (dropDownlist.SelectedValue == "Other")
{
avgift_namnTextBox.Enabled = true;
avgift_namnTextBox.Text = string.Empty;
avgift_prisTextBox.Enabled = true;
avgift_prisTextBox.Text = string.Empty;
}
else
{
avgift_namnTextBox.Enabled = false;
avgift_namnTextBox.Text = dropDownlist.SelectedItem.Text;
avgift_prisTextBox.Enabled = false;
avgift_prisTextBox.Text = dropDownlist.SelectedValue;
}
}
Dropdownlist där värdet jag väljer hamnar i textbox
Hej igen
Jag löste problemet med följande kod:
protected void SelectedIndexChanged(object sender, EventArgs e)
{
[B] TextBox avgift_namnTextBox = (TextBox)FormView3.Row.FindControl("avgift_namnTextBox");
TextBox avgift_prisTextBox = (TextBox)FormView3.Row.FindControl("avgift_prisTextBox");[/B]
DropDownList dropDownlist = (DropDownList)sender;
if (dropDownlist.SelectedValue == "Other")
{
avgift_namnTextBox.Enabled = true;
avgift_namnTextBox.Text = string.Empty;
avgift_prisTextBox.Enabled = true;
avgift_prisTextBox.Text = string.Empty;
}
else
{
avgift_namnTextBox.Enabled = false;
avgift_namnTextBox.Text = dropDownlist.SelectedItem.Text;
avgift_prisTextBox.Enabled = false;
avgift_prisTextBox.Text = dropDownlist.SelectedValue;
}
}