When the selected index changes in the combobox "ddlBuyers" other comboboxes in the grid get there value cleared? I have commented out the code that repopulates comboboxes for every row as this was resulting in very slow performance when we had large numbers of rows.
Please see the code bellow:
ASP:
<asp:TemplateField HeaderText="Buyer" HeaderStyle-Width="5.2%" ShowHeader="true">
<ItemTemplate>
<telerik:RadComboBox ID="ddlBuyers" runat="server" NoWrap="True" MaxHeight="300"
Width="100%" CausesValidation="false" HighlightTemplatedItems="true" Skin="MetroTouch"
AllowCustomText="false" MarkFirstMatch="True" CssClass="input-block-level" OnSelectedIndexChanged="ddlBuyers_SelectedIndexChanged"
OnItemDataBound="ddlBuyers_ItemDataBound" OnClientKeyPressing="(function(sender, e){ if (!sender.get_dropDownVisible()) sender.showDropDown(); })"
AutoPostBack="true" onkeydown="return ValidateEmpty(event,this);">
<ItemTemplate>
<ul>
<li class="col1">
<%# DataBinder.Eval(Container.DataItem, "BuyerCode")%>
</li>
<li class="col2">- </li>
<li class="col3">
<%# DataBinder.Eval(Container.DataItem, "BuyerName")%>
</li>
</ul>
</ItemTemplate>
</telerik:RadComboBox>
<asp:TextBox ID="txtBuyer" runat="server" Height="36px" name="some_field" CssClass="input-block-level"
Enabled="false" Text='<%#Eval("BuyerCode") %>' Visible="false"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" Style="margin-left: 48%; display: block !important;
padding-top: 0px; margin-top: 0px;" ID="rfvddlBuyers" Height="10" ForeColor="Red"
ControlToValidate="ddlBuyers" ErrorMessage="*" ValidationGroup="AddClick"></asp:RequiredFieldValidator>
</ItemTemplate>
<ItemStyle CssClass="itmstyle" />
</asp:TemplateField>
C#:
RadComboBox ddlBuyers = null;
listBuyer = new List<Buyer>();
listBuyer = ViewState["Buyer"] as List<Buyer>;
buyer = new Buyer();
RadComboBox ddl = (RadComboBox)sender;
GridViewRow gvRow = (GridViewRow)ddl.Parent.Parent;
int idx = Convert.ToInt32(gvRow.RowIndex);
//foreach (GridViewRow row in grdWhiteFishSaleNotes.Rows)
//{
// int index = Convert.ToInt32(row.RowIndex);
// ddlBuyers = row.FindControl("ddlBuyers") as RadComboBox;
// RadComboBox ddlBoxDestination = row.FindControl("ddlBoxDestination") as RadComboBox;
// RadComboBox ddlPresentation = row.FindControl("ddlPresentation") as RadComboBox;
// RadComboBox ddlDisposal = row.FindControl("ddlDisposal") as RadComboBox;
// RadComboBox ddlWithdrawnUsage = row.FindControl("ddlWithdrawnUsage") as RadComboBox;
// RadComboBox ddlPrivateSale = row.FindControl("ddlPrivateSale") as RadComboBox;
// RadComboBox ddlSpecies = row.FindControl("ddlSpecies") as RadComboBox;
// TextBox txtNoBoxes = row.FindControl("txtNoBoxes") as TextBox;
// TextBox txtFreeBoxes = row.FindControl("txtFreeBoxes") as TextBox;
// TextBox txtBoxWeight = row.FindControl("txtBoxWeight") as TextBox;
// TextBox txtTotalWeight = row.FindControl("txtTotalWeight") as TextBox;
// TextBox txtUnitPrice = row.FindControl("txtUnitPrice") as TextBox;
// TextBox txtActualCost = row.FindControl("txtActualCost") as TextBox;
// TextBox txtCostPerKilo = row.FindControl("txtCostPerKilo") as TextBox;
// if (idx == index)
// {
RadComboBox ddlSpecies = grdWhiteFishSaleNotes.Rows[idx].FindControl("ddlSpecies") as RadComboBox;
RadComboBox ddlBoxDestination = grdWhiteFishSaleNotes.Rows[idx].FindControl("ddlBoxDestination") as RadComboBox;
ddlBuyers = grdWhiteFishSaleNotes.Rows[idx].FindControl("ddlBuyers") as RadComboBox;
ddlSpecies.Focus();
if (String.IsNullOrEmpty(ddlBuyers.SelectedValue))
{
ddlBuyers.SelectedValue = ddlBuyers.Text.Trim();
}
if (ViewState["Buyer"] != null)
{
var defaultDestinationList = listBuyer.Where(x => x.BuyerCode.Contains(ddlBuyers.Text.Trim())).ToList();
if (defaultDestinationList.Count > 0 && defaultDestinationList != null)
{
buyer = defaultDestinationList[0];
if (!String.IsNullOrEmpty(buyer.DefaultDestination))
{
ddlBoxDestination.SelectedValue = buyer.DefaultDestination;
}
}
}
if (String.IsNullOrEmpty(ddlBuyers.SelectedValue))
{
ddlBoxDestination.ClearSelection();
}
// }
// else
// {
// ddlBoxDestination.SelectedValue = ddlBoxDestination.Text.Trim();
// }
// ddlSpecies.SelectedValue = ddlSpecies.Text.Trim();
// ddlPresentation.SelectedValue = ddlPresentation.Text.Trim();
// ddlDisposal.SelectedValue = ddlDisposal.Text.Trim();
// ddlWithdrawnUsage.SelectedValue = ddlWithdrawnUsage.Text.Trim();
// ddlPrivateSale.SelectedValue = ddlPrivateSale.Text;
// if (ddlDisposal.SelectedValue.Equals("WDR"))
// {
// ddlWithdrawnUsage.Enabled = true;
// }
// else
// {
// ddlWithdrawnUsage.ClearSelection();
// ddlWithdrawnUsage.Enabled = false;
// }
// txtNoBoxes.ToolTip = txtNoBoxes.Text;
// txtFreeBoxes.ToolTip = txtFreeBoxes.Text;
// txtBoxWeight.ToolTip = txtBoxWeight.Text;
// txtTotalWeight.ToolTip = txtTotalWeight.Text;
// txtUnitPrice.ToolTip = txtUnitPrice.Text;
// txtActualCost.ToolTip = txtActualCost.Text;
// txtCostPerKilo.ToolTip = txtCostPerKilo.Text;
// txtBoxes.ToolTip = txtBoxes.Text;
// txtWeight.ToolTip = txtWeight.Text;
// txtCost.ToolTip = txtCost.Text;
// if (!string.IsNullOrEmpty(ddlBuyers.SelectedValue))
// {
// ddlBuyers.ToolTip = ddlBuyers.SelectedValue;
// }
// if (!string.IsNullOrEmpty(ddlSpecies.SelectedValue))
// {
// ddlSpecies.ToolTip = ddlSpecies.SelectedValue;
// }
Please see the code bellow:
ASP:
<asp:TemplateField HeaderText="Buyer" HeaderStyle-Width="5.2%" ShowHeader="true">
<ItemTemplate>
<telerik:RadComboBox ID="ddlBuyers" runat="server" NoWrap="True" MaxHeight="300"
Width="100%" CausesValidation="false" HighlightTemplatedItems="true" Skin="MetroTouch"
AllowCustomText="false" MarkFirstMatch="True" CssClass="input-block-level" OnSelectedIndexChanged="ddlBuyers_SelectedIndexChanged"
OnItemDataBound="ddlBuyers_ItemDataBound" OnClientKeyPressing="(function(sender, e){ if (!sender.get_dropDownVisible()) sender.showDropDown(); })"
AutoPostBack="true" onkeydown="return ValidateEmpty(event,this);">
<ItemTemplate>
<ul>
<li class="col1">
<%# DataBinder.Eval(Container.DataItem, "BuyerCode")%>
</li>
<li class="col2">- </li>
<li class="col3">
<%# DataBinder.Eval(Container.DataItem, "BuyerName")%>
</li>
</ul>
</ItemTemplate>
</telerik:RadComboBox>
<asp:TextBox ID="txtBuyer" runat="server" Height="36px" name="some_field" CssClass="input-block-level"
Enabled="false" Text='<%#Eval("BuyerCode") %>' Visible="false"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" Style="margin-left: 48%; display: block !important;
padding-top: 0px; margin-top: 0px;" ID="rfvddlBuyers" Height="10" ForeColor="Red"
ControlToValidate="ddlBuyers" ErrorMessage="*" ValidationGroup="AddClick"></asp:RequiredFieldValidator>
</ItemTemplate>
<ItemStyle CssClass="itmstyle" />
</asp:TemplateField>
C#:
RadComboBox ddlBuyers = null;
listBuyer = new List<Buyer>();
listBuyer = ViewState["Buyer"] as List<Buyer>;
buyer = new Buyer();
RadComboBox ddl = (RadComboBox)sender;
GridViewRow gvRow = (GridViewRow)ddl.Parent.Parent;
int idx = Convert.ToInt32(gvRow.RowIndex);
//foreach (GridViewRow row in grdWhiteFishSaleNotes.Rows)
//{
// int index = Convert.ToInt32(row.RowIndex);
// ddlBuyers = row.FindControl("ddlBuyers") as RadComboBox;
// RadComboBox ddlBoxDestination = row.FindControl("ddlBoxDestination") as RadComboBox;
// RadComboBox ddlPresentation = row.FindControl("ddlPresentation") as RadComboBox;
// RadComboBox ddlDisposal = row.FindControl("ddlDisposal") as RadComboBox;
// RadComboBox ddlWithdrawnUsage = row.FindControl("ddlWithdrawnUsage") as RadComboBox;
// RadComboBox ddlPrivateSale = row.FindControl("ddlPrivateSale") as RadComboBox;
// RadComboBox ddlSpecies = row.FindControl("ddlSpecies") as RadComboBox;
// TextBox txtNoBoxes = row.FindControl("txtNoBoxes") as TextBox;
// TextBox txtFreeBoxes = row.FindControl("txtFreeBoxes") as TextBox;
// TextBox txtBoxWeight = row.FindControl("txtBoxWeight") as TextBox;
// TextBox txtTotalWeight = row.FindControl("txtTotalWeight") as TextBox;
// TextBox txtUnitPrice = row.FindControl("txtUnitPrice") as TextBox;
// TextBox txtActualCost = row.FindControl("txtActualCost") as TextBox;
// TextBox txtCostPerKilo = row.FindControl("txtCostPerKilo") as TextBox;
// if (idx == index)
// {
RadComboBox ddlSpecies = grdWhiteFishSaleNotes.Rows[idx].FindControl("ddlSpecies") as RadComboBox;
RadComboBox ddlBoxDestination = grdWhiteFishSaleNotes.Rows[idx].FindControl("ddlBoxDestination") as RadComboBox;
ddlBuyers = grdWhiteFishSaleNotes.Rows[idx].FindControl("ddlBuyers") as RadComboBox;
ddlSpecies.Focus();
if (String.IsNullOrEmpty(ddlBuyers.SelectedValue))
{
ddlBuyers.SelectedValue = ddlBuyers.Text.Trim();
}
if (ViewState["Buyer"] != null)
{
var defaultDestinationList = listBuyer.Where(x => x.BuyerCode.Contains(ddlBuyers.Text.Trim())).ToList();
if (defaultDestinationList.Count > 0 && defaultDestinationList != null)
{
buyer = defaultDestinationList[0];
if (!String.IsNullOrEmpty(buyer.DefaultDestination))
{
ddlBoxDestination.SelectedValue = buyer.DefaultDestination;
}
}
}
if (String.IsNullOrEmpty(ddlBuyers.SelectedValue))
{
ddlBoxDestination.ClearSelection();
}
// }
// else
// {
// ddlBoxDestination.SelectedValue = ddlBoxDestination.Text.Trim();
// }
// ddlSpecies.SelectedValue = ddlSpecies.Text.Trim();
// ddlPresentation.SelectedValue = ddlPresentation.Text.Trim();
// ddlDisposal.SelectedValue = ddlDisposal.Text.Trim();
// ddlWithdrawnUsage.SelectedValue = ddlWithdrawnUsage.Text.Trim();
// ddlPrivateSale.SelectedValue = ddlPrivateSale.Text;
// if (ddlDisposal.SelectedValue.Equals("WDR"))
// {
// ddlWithdrawnUsage.Enabled = true;
// }
// else
// {
// ddlWithdrawnUsage.ClearSelection();
// ddlWithdrawnUsage.Enabled = false;
// }
// txtNoBoxes.ToolTip = txtNoBoxes.Text;
// txtFreeBoxes.ToolTip = txtFreeBoxes.Text;
// txtBoxWeight.ToolTip = txtBoxWeight.Text;
// txtTotalWeight.ToolTip = txtTotalWeight.Text;
// txtUnitPrice.ToolTip = txtUnitPrice.Text;
// txtActualCost.ToolTip = txtActualCost.Text;
// txtCostPerKilo.ToolTip = txtCostPerKilo.Text;
// txtBoxes.ToolTip = txtBoxes.Text;
// txtWeight.ToolTip = txtWeight.Text;
// txtCost.ToolTip = txtCost.Text;
// if (!string.IsNullOrEmpty(ddlBuyers.SelectedValue))
// {
// ddlBuyers.ToolTip = ddlBuyers.SelectedValue;
// }
// if (!string.IsNullOrEmpty(ddlSpecies.SelectedValue))
// {
// ddlSpecies.ToolTip = ddlSpecies.SelectedValue;
// }