0

私の列の 1 つが GridTemplateColumn である RadGrid があり、いくつかの項目をロードする RadComboBox があります (編集モードは「PopUp」に設定されています)。私が欲しいのは、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 ステートメント内の行にブレークポイントを設定しました。実際には実行されますが、アラートが表示されません。

4

1 に答える 1

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 内のテキスト ボックスに表示します。このようにして、ユーザーは新しい項目を追加する前にテキストを変更できます。

たとえば、ユーザーは「水筒」と入力して商品を検索できます。結果が見つからなかったため、ユーザーは「新しい製品を追加...」項目をクリックしました。確認ボックスが表示されたら、ユーザーは [はい] をクリックして実際に製品を追加する前に、「ウォーター ボトル」を「グリーン 耐久性ウォーター ボトル 600ml」に変更できます。

于 2015-03-16T00:24:27.237 に答える