2012-10-04 1 views
2

나는이 포럼에서ASP.NET C#을 - 사용자 컨트롤

누군가가 어떻게 사용자 countrol WTH 드롭 다운 목록 작업을 얻는 저를 도와하고 노력하고 ASP.NET에 새로운 오전를 사용하여 드롭 다운 목록입니다.

내 사용자 정의 컨트롤 파일 인 VendorListControl.ascx에 아래 코드가 있습니다. VendorListControl.ascx.cs가 VendorName을 선택할 때 올바르게 작동한다고 가정하십시오. "ddlVendorBelect"를 실행하기 위해 "ddlVendor_SelectedIndexChanged"를 실행합니다.

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="VendorListControl.ascx.cs" Inherits="MyNamespace.VendorListControl" %> 
<asp:DropDownList runat="server" ID="ddlVendorList" onselectedindexchanged="ddlVendor_SelectedIndexChanged" AutoPostBack="True" /> 
<asp:DropDownList runat="server" ID="ddlVendorBUList" AutoPostBack="True" /> 
<asp:Label runat="server" ID="lblMessage" /> 

내 VendorListControl.ascx.cs 코드 :

using System; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 

namespace MyNamespace 
{ 
    public partial class VendorListControl : System.Web.UI.UserControl 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       FillVendors(); 
      } 
     } 

     protected void ddlVendor_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      int VendorID = Convert.ToInt32(ddlVendorList.SelectedValue.ToString()); 
      FillVendorBU(VendorID); 
     } 

     private void FillVendors() 
     { 
      string strConn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
      System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strConn); 

      SqlCommand cmd = new SqlCommand(); 
      cmd.Connection = conn; 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "SELECT VendorID, VendorName FROM MDF_Vendor"; 

      DataSet objDs = new DataSet(); 
      SqlDataAdapter dAdapter = new SqlDataAdapter(); 
      dAdapter.SelectCommand = cmd; ; 
      conn.Open(); 
      dAdapter.Fill(objDs); 
      conn.Close(); 

      if (objDs.Tables[0].Rows.Count > 0) 
      { 
       this.ddlVendorList.DataSource = objDs.Tables[0]; 
       this.ddlVendorList.DataTextField = "VendorName"; 
       this.ddlVendorList.DataValueField = "VendorID"; 
       this.ddlVendorList.DataBind(); 
       this.ddlVendorList.Items.Insert(0, "-- Select --"); 
      } 
      else 
      { 
       this.lblMessage.Text = "No Vendor Found"; 
      } 
     } 

     private void FillVendorBU(int VendorID) 
     { 
      string strConn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
      SqlConnection con = new SqlConnection(strConn); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.Connection = con; 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "SELECT VendorBUID, VendorBUName FROM dbo.MDF_VendorBU WHERE VendorID = @VendorID"; 
      cmd.Parameters.AddWithValue("@VendorID", VendorID); 
      DataSet objDs = new DataSet(); 
      SqlDataAdapter dAdapter = new SqlDataAdapter(); 
      dAdapter.SelectCommand = cmd; 
      con.Open(); 
      dAdapter.Fill(objDs); 
      con.Close(); 
      if (objDs.Tables[0].Rows.Count > 0) 
      { 
       ddlVendorBUList.DataSource = objDs.Tables[0]; 
       ddlVendorBUList.DataTextField = "VendorBUName"; 
       ddlVendorBUList.DataValueField = "VendorBUID"; 
       ddlVendorBUList.DataBind(); 
       ddlVendorBUList.Items.Insert(0, "--Select--"); 
      } 
      else 
      { 
       lblMessage.Text = "No states found"; 
      } 
     } 

    } 
} 

다음, 내 CreateNewRecord.aspx 페이지에서, 나는 사용자 컨트롤에서 드롭 다운 목록을 모두 포함하려면이 코드가 있습니다. 드롭 다운 목록이 제대로 작동하는지 확인할 수 있습니다.

<%@ Register TagPrefix="uc" TagName="VendorListControl" Src="Controls/VendorListControl.ascx" %> 
// Some where in the form 
<tr> 
    <td class="right" width="20%">Vendor Name:</td> 
     <td> 
      <uc:VendorListControl runat="server" /> 
     </td> 
</tr> 

문제는 두 개의 드롭 다운 목록의 ID와 관련이 있습니다. attemp 내가 삽입 레코드를 할 때 "ddlVendorList"및 "ddlVendorBUList"사용자 컨트롤 ascx 페이지에서 온 ID를 검색하지 않는 것 같습니다. 오류가 나는 ASP.NET에 새로운 오전 알고

ExecuteInsert(ddlVendorList.SelectedItem.Text, 
    ddlVendorBUList.SelectedItem.Text, 
    MDFAmount.Text, 
    StartDate.Text, 
    EndDate.Text, 
    VendorQuarter.Text, 
    MDFName.Text, 
    MDFSummary.Text, 
    Status.SelectedItem.Text, 
    CreatedBy.Value 
); 
Response.Write("<b>Record was successfully added!</b>"); 

'이름'ddlVendorList '는 현재 컨텍스트에 존재하지 않습니다 ", 이렇게 도와주세요.

답변

2

VendorListControl에 두 개의 속성을 넣어 ddlVendorList selectedItem 텍스트와 ddlVendorBUList selectedItem 텍스트를 얻을 수 있습니다. VendorListControl.ascx.cs에서

:

public string GetDdlVendorListSelectedItemText 
{ 
    get { return this.ddlVendorList.text; } 
} 

public string GetDdlVendorBUListSelectedItemText 
{ 
    get { return this.ddlVendorBUList.text; } 
} 

그런 다음 페이지 CreateNewRecord에서, 당신은 그 속성에 액세스 할 수 있습니다. 당신은 당신의 컨트롤에 ID를 추가해야합니다

<%@ Register TagPrefix="uc" TagName="VendorListControl" Src="Controls/VendorListControl.ascx" %> 
// Some where in the form 
<tr> 
    <td class="right" width="20%">Vendor Name:</td> 
     <td> 
      <uc:VendorListControl id="vendorListControl" runat="server" /> 
     </td> 
</tr> 

그리고 당신은 CreateNewRecord.aspx.cs이처럼 속성에 액세스 할 수 있습니다 :

ExecuteInsert(this.vendorListControl.GetDdlVendorListSelectedItemText, 
    this.vendorListControl.GetDdlVendorBUListSelectedItemText, 
    MDFAmount.Text, 
    StartDate.Text, 
    EndDate.Text, 
    VendorQuarter.Text, 
    MDFName.Text, 
    MDFSummary.Text, 
    Status.SelectedItem.Text, 
    CreatedBy.Value 
); 
+0

논문 속성을 추가 한 후에는

재산

에 세터를 정의합니다. 내게 초보자에게 도움이되는 특정 주셔서 감사합니다. – Milacay

1

당신은 당신의 UserControl에 SelectedItem.Text를 반환 public property을 정의합니다.

사용자 컨트롤 (ASCX) 당신은 당신의 공공 재산 사용할 수 있습니다

public string YourValue 
{ 
    get 
    { 
    return ddlVendorList.SelectedItem.Text; 
    } 

} 

페이지 (영문) : YourValue를.

ExecuteInsert(YourValue, 
....... ); 

는의 Nota : 당신이 값을 설정하려는 경우 귀하의 업데이트가 내가 지금 작동있어

public string YourDdlVendorListSelectedItemText 
{ 
    get 
    { 
     return this.ddlVendorList.text; 
    } 
} 

public string YourDdlVendorBUListSelectedItemText 
{ 
    get 
    { 
    return this.ddlVendorBUList.text; 
    } 
} 
+0

내 ascx.cs 파일의 코드로 게시물을 업데이트했습니다. 내가 새로 왔기 때문에, 그 파일을 살펴보고 내가 수정해야 할 것을 알려주도록 도와주세요 ... 고마워요! – Milacay

+0

도와 드리겠습니다. Milacay, 내 게시물을 업데이트했습니다. –

+0

고마워요, 지금 작동하겠습니다. – Milacay