0

내 열 중 하나가 RadComboBox에 일부 항목을로드하는 GridTemplateColumn 인 RadGrid가 있습니다 (편집 모드가 'PopUp'으로 설정 됨). 내가 원하는 것은, RadComboBox에서 항목을 검색하는 동안 항목이 발견되지 않으면 사용자에게 새 항목을 추가하는 옵션을 제공하는 것입니다. 현재 테스트 목적으로 만 항목이없는 경우 메시지를 표시 할 수 있기를 원합니다. 이것은 지금까지 시도한 것입니다.검색 후 항목이 발견되지 않으면 RadComboBox에 메시지가 표시됩니다.

다음과 같이 RadGrid에서 내 RadComboBox가 정의되어 다음과 같이

<EditItemTemplate> 
    <telerik:RadComboBox runat="server" ID="Product_PKRadComboBox" 
    ShowDropDownOnTextboxClick="false" ShowMoreResultsBox="true" EnableVirtualScrolling="true" 
    EnableLoadOnDemand="true" EnableAutomaticLoadOnDemand="true" ItemsPerRequest="10" 
    OnItemsRequested="Product_PKRadComboBox_ItemsRequested" AllowCustomText="true" 
    Filter="StartsWith" DataSourceID="SqlProducts" DataTextField="ProductCode" 
    DataValueField="Product_PK"></telerik:RadComboBox> 
</EditItemTemplate> 

그래서 나는 'OnItemsRequested'이벤트에서 내 논리를 확인하고 있습니다 :
protected void Product_PKRadComboBox_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e) 
    { 
     //RadComboBox combo = (RadComboBox)sender; 

     if (e.EndOfItems && e.NumberOfItems==0) 
     { 
      ScriptManager.RegisterStartupScript(this, this.GetType(), "testMessage", "alert('Product Not Found. Do you want to add a Custom Product?');", true); 
      //Page.ClientScript.RegisterStartupScript(typeof(Page), "some_name", "if(confirm('here the message')==false)return false;"); 
     } 
    } 

내가 내 코드의 두 줄을 시도 IF 문 (사용자가 RadComboBox에 입력 한 내용이 있는지 여부를 확인하는 중입니다. 항목을 반환하지 않고 메시지를 표시하는 경우)하지만 아무 것도 작동하지 않는 것 같습니다. 디버그 모드에서 동일한 시도하고 IF 문 내에서 줄에 중단 점을 설정, 실제로 실행되는 있지만 경고를 볼 수 없습니다.

답변

0

나는 이것과 비슷한 것을했고 내 솔루션은 꽤 잘 작동하는 것 같다.

기본적으로 ItemsRequested에서 일치하는 항목이 발견되지 않으면 RadComboBoxItem을 수동으로 추가합니다. "새 제품 추가 ..."와 같은 의미있는 텍스트를 입력하고 실제 결과와 구별되도록 고유 한 스타일을 지정하십시오. 이 같은

뭔가 :

protected void Product_PKRadComboBox_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e) 
{ 
    if (e.EndOfItems && e.NumberOfItems==0) 
    { 
     var addItem = new RadComboBoxItem("Add a new product...", "addnewproduct"); 
     addItem.ToolTip = "Click to create a new product..."; 
     addItem.CssClass = "UseSpecialCSSStyling"; 
     Product_PKRadComboBox.Items.Add(addItem); 
    } 
} 

그런 다음 "addnewproduct"항목을 선택했을 때의 SelectedIndexChanged 이벤트를 처리해야합니다. 콤보 상자의 AutoPostBack = "true"로 설정하십시오.

protected void Product_PKRadComboBox_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) 
{    
    if (!string.IsNullOrEmpty(e.Value) && e.Value.Equals("addnewproduct")) 
    { 
     // do whatever you have to do to add a new product 
    }  
} 

RadWindow를 사용하여 "새 제품을 추가 하시겠습니까?"라는 확인 상자를 표시 할 수 있습니다. 예 및 취소 버튼이 있습니다. 사용자가 입력 한 검색 텍스트를 RadWindow의 텍스트 상자에 표시하여 한 걸음 더 나아가십시오. 이렇게하면 사용자는 새 항목을 추가하기 전에 텍스트를 수정할 수 있습니다.

예를 들어 사용자는 "물병"을 입력하여 제품을 검색 할 수 있습니다. 결과가 없으므로 사용자가 "Add a new product ..."항목을 클릭하십시오. 확인 상자가 나타나면 "물병"을 "Green Durable Water Bottle 600ml"로 변경 한 다음 Yes를 클릭하여 실제로 제품을 추가 할 수 있습니다.