2016-04-04 22 views
1

Tüm liste öğelerini bir metin dosyasından yükleyen bir açılır listeye sahibim; bu, yazıcı adı, açıklama, ipadresi ve bağlantı dizesi kimliği listesini içerir. bu yüzden kullanıcıya yazıcı adı-açıklamasını gösteriyorum ve kullanıcı yazıcıyı seçtiğimde geçirdiğim değerler duruma bağlı olarak ip adresi veya bağlantı dizesidir. > 0 böylece I dayanmaktadır DropDownlist PostBack Seçilen Değeri Gevşiyor

when drop down is clicked

şimdi kullanıcı yazıcı böylece seçilmiş indeksi seçer: Kullanıcı damla aşağı tıkladığınızda

protected void Page_Load(object sender, EventArgs e) 
    { 
    LoadPrinterList(); 
    } 
protected void LoadPrinterList() 
{ 
string CSVFilePathName = 
System.Configuration.ConfigurationManager.AppSettings["FilePath"]; 
string[] Lines = File.ReadAllLines(CSVFilePathName); 
string[] Fields; 
Fields = Lines[0].Split(new char[] { ',' }); 
int Cols = Fields.GetLength(0); 
DataTable dt = new DataTable(); 
//1st row must be column names; 
//force lower case to ensure matching later on. 
for (int i = 0; i < Cols; i++) 
dt.Columns.Add(Fields[i].ToLower(), typeof(string)); 
dt.Columns.Add("nameanddescription", 
typeof(string), "name +'-'+ description"); 
dt.Columns.Add("ipandconnectionstring", 
typeof(string), "ip +'-'+ ConncetionStringID"); 
DataRow Row; 
for (int i = 1; i < Lines.GetLength(0); i++) 
{ 
    Fields = Lines[i].Split(new char[] { ',' }); 
    Row = dt.NewRow(); 
    for (int f = 0; f < Cols; f++) 
    Row[f] = Fields[f]; 
    dt.Rows.Add(Row); 
    } 
    string hostname = Request.UserHostName.Substring(0, 3); 
    string[] name = Printerlist.SelectedValue.Split('-'); 
    //string plant = name[0].ToString(); 
    //string plantvalue = plant.Substring(0, 3); 
    //if(hostname == plantvalue) 
    //{ 
    Printerlist.DataTextField = "nameanddescription"; 
    Printerlist.DataValueField = "ipandconnectionstring"; 
    //} 
    Printerlist.DataSource = dt; 
    Printerlist.DataBind(); 
} 

What the user sees first as an option for the printer list

bunu gördüklerinde arkasındaki kodda aşağıdakileri yapın.

protected void Printerlist_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
    } 
    else 
    { 

    if (Printerlist.SelectedItem.Text.Length > 0) 
    { 
    TxtItem.Focus(); 
    } 
    else 
    { 
    TxtItem.Text = string.Empty; 
    TxtQty.Text = string.Empty; 
    DropDownList2.SelectedIndex = 0; 
    lbldesc.Visible = false; 
    //TxtBase.Text = string.Empty; 
    //TxtBase1.Text = string.Empty; 
    bestbeforewillbe.Text = string.Empty; 
    TxtBestBeforeMonths.Text = string.Empty; 
    TxtRotcode.Text = string.Empty; 
    zplcode.Text = string.Empty; 
    string message = "The selected printer is 
    not a local printer"; 
    System.Text.StringBuilder sb = 
    new System.Text.StringBuilder(); 
    sb.Append("<script type = 'text/javascript'>"); 
    sb.Append("window.onload=function(){"); 
    sb.Append("alert('"); 
    sb.Append(message); 
    sb.Append("')};"); 
    sb.Append("</script>"); 
    ClientScript.RegisterClientScriptBlock 
    (this.GetType(), "alert", sb.ToString()); 
    } 

} 

}

bu ben EnableViewState var = true benim aspx sayfasında

<asp:DropDownList ID="Printerlist" runat="server" 
Height="16px" Width="268px" AutoPostBack="True" OnSelectedIndexChanged="Printerlist_SelectedIndexChanged" OnTextChanged="Printerlist_TextChanged" ViewStateMode="Enabled"></asp:DropDownList> 

yılında dropdownlist değerleri ise; ama bu da işe yaramadı.

plese yardımı Kullanıcının bir geri gönderme yaptığı her seferinde bir değer seçtiğinde ve yazıcı değeri olarak "-" geri bildirimi seçildikten sonra, anlayamıyorum.

+0

Bundan nefret ediyorum .... if (! Page.IsPostBack) {} else {// do stuff} ... neden olmasın sadece (Page.IsPostBack) {// do stuff} – JSON

cevap

1

Basitçe sayfa yüklendiğinde ISPOSTBACK kontrol edin Page_Load yöntem, bu onların ilk verilerle kontrolleri repopulating olduğu tetiklediği aksi her zaman

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    LoadPrinterList(); 
} 
Bir PostBack gerçekleşmişse açıkça kontrol etmeniz gerekir
+0

İstediğiniz yanıt için teşekkürler Bud – CodeMan

0

(yani orada değişikliklerinizi kaybediyorsunuz). Ayrıca

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     // Only perform this on the initial load 
     LoadPrinterList(); 
    } 
} 

, etkinliğe olarak Printerlist_SelectedIndexChanged etkinliği içinde benzer bir çek gerekmez: bir ilk yükleme ise

Sadece bir if ifadesi ekleyin ve yalnızca LoadPrinterList() yöntemi uygulamak gerekir sayfanın içinden tetiklenecek (yani, daha önce yüklendikten sonra), bu yüzden ifade asla doğru olarak değerlendirilmemelidir.

+0

oh evet, her bir kontrol için bir gönderi olup olmadığını kontrol ediyordum, yönteminiz çok daha iyi çalışıyor, teşekkürler tomurcuk – CodeMan

İlgili konular