Последние пару часов я пытался найти способ решения следующей проблемы, но безуспешно.Я нашел много возможных решений в Интернете, но ни одно из них не было решением моей проблемы.Я также разместил этот же вопрос на официальном форуме Telerik, хотя почти уверен, что не получу от них ответа.
Проблема возникает, когда я хочу вставить данные в пустой источник данных.Я смог найти обходные пути для RadComboBoxes, но не для Textboxes.Отображаемая ошибка: «Привязка данных:« Telerik.Web.UI.GridInsertionObject »не содержит свойство с именем« OpciPrioritet »."
Вот код:
.ascx (необходимо для RadGrid):
<table>
<tr>
<td>
Nadređeni ticket:
</td>
<td colspan="3">
<telerik:RadComboBox ID="rcbNadredeniTicket" AppendDataBoundItems="true" runat="server"
Width="455px">
</telerik:RadComboBox>
</td>
</tr>
<tr>
<td>
Prijavio:
</td>
<td colspan="3">
<telerik:RadComboBox ID="rcbPrijavio" AppendDataBoundItems="true" runat="server"
Width="455px">
</telerik:RadComboBox>
</td>
</tr>
<tr>
<td>
Asset:
</td>
<td colspan="3">
<telerik:RadComboBox ID="rcbAsset" AppendDataBoundItems="true" runat="server" Width="455px">
</telerik:RadComboBox>
</td>
</tr>
<tr>
<td>
Opći prioritet:
</td>
<td>
<asp:TextBox ID="txtOpciPrioritet" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.OpciPrioritet") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
Tip:
</td>
<td>
<telerik:RadComboBox ID="rcbTip" runat="server">
</telerik:RadComboBox>
</td>
</tr>
<tr>
<td>
Status:
</td>
<td>
<telerik:RadComboBox ID="rcbStatus" runat="server">
</telerik:RadComboBox>
</td>
</tr>
<tr>
<td>
Datum prijave:
</td>
<td>
<asp:TextBox ID="txtDatumPrijave" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.DatumPrijave") %>'></asp:TextBox>
</td>
<td>
Vrsta prijave:
</td>
<td>
<telerik:RadComboBox ID="rcbVrstaPrijave" Text='<%# DataBinder.Eval(Container, "DataItem.VrstaPrijave") %>'
runat="server">
</telerik:RadComboBox>
</td>
</tr>
<tr>
<td>
Prioritet:
</td>
<td>
<telerik:RadComboBox ID="rcbPrioritet" Text='<%# DataBinder.Eval(Container, "DataItem.Prioritet") %>'
runat="server">
</telerik:RadComboBox>
</td>
<td>
Deadline:
</td>
<td>
<asp:TextBox ID="txtDeadline" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.DatumDo") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
Opis:
</td>
<td colspan="3">
<asp:TextBox ID="txtOpis" runat="server" TextMode="MultiLine" Width="455px" Height="200px"
Text='<%# DataBinder.Eval(Container, "DataItem.Opis") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
Zatvoren ticket:
</td>
<td>
<asp:CheckBox ID="chkZatvoren" runat="server" Checked='<%# CheckNull(DataBinder.Eval(Container, "DataItem.Zatvoren")) %>' />
</td>
</tr>
<tr>
<td>
Opis zatvorenog ticketa:
</td>
<td colspan="3">
<asp:TextBox ID="txtOpisZatvorenog" runat="server" TextMode="MultiLine" Width="455px"
Height="200px" Text='<%# DataBinder.Eval(Container, "DataItem.OpisZatvoren") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
Bilješke:
</td>
<td colspan="3">
<asp:TextBox ID="txtBiljeske" runat="server" TextMode="MultiLine" Width="455px" Height="200px"
Text='<%# DataBinder.Eval(Container, "DataItem.Biljeske") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnUpdate" Text="Spremi" runat="server" CommandName="Update" Visible='<%# !(DataItem is Telerik.Web.UI.GridInsertionObject) %>'>
</asp:Button>
<asp:Button ID="btnInsert" Text="Spremi" runat="server" CommandName="PerformInsert"
Visible='<%# DataItem is Telerik.Web.UI.GridInsertionObject %>'></asp:Button>
<asp:Button ID="btnCancel" Text="Odustani" runat="server" CausesValidation="False"
CommandName="Cancel"></asp:Button>
</td>
</tr>
.aspx.cs (только необходимый фрагмент кода):
protected void gvTicketi_ItemDataBound(object sender, GridItemEventArgs e)
{
int idFirma = Convert.ToInt16(Request.QueryString["idt"]);
if ((e.Item is GridEditFormItem) && e.Item.IsInEditMode )
{
GridEditFormItem editFormItem = (GridEditFormItem)e.Item;
UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
TSEntities db = new TSEntities();
Ticket ticket = new Ticket();
TicketAsset ticketAsset = new TicketAsset();
RadComboBox rcbTip = (RadComboBox)userControl.FindControl("rcbTip");
rcbTip.Items.Add(new RadComboBoxItem("Incident"));
rcbTip.Items.Add(new RadComboBoxItem("Reklamacija"));
rcbTip.Items.Add(new RadComboBoxItem("Nova funkcionalnost"));
rcbTip.DataBind();
rcbTip.Text = "'<%# DataBinder.Eval(Container, 'DataItem.Tip') %>'";
RadComboBox rcbStatus = (RadComboBox)userControl.FindControl("rcbStatus");
rcbStatus.Items.Add(new RadComboBoxItem("New"));
rcbStatus.Items.Add(new RadComboBoxItem("U radu"));
rcbStatus.Items.Add(new RadComboBoxItem("On hold"));
rcbStatus.Items.Add(new RadComboBoxItem("Pending"));
rcbStatus.Items.Add(new RadComboBoxItem("Scheduled"));
rcbStatus.Items.Add(new RadComboBoxItem("Canceled"));
rcbStatus.Items.Add(new RadComboBoxItem("Completed"));
rcbStatus.DataBind();
rcbStatus.Text = "'<%# DataBinder.Eval(Container, 'DataItem.Status') %>'";
RadComboBox rcbVrstaPrijave = (RadComboBox)userControl.FindControl("rcbVrstaPrijave");
rcbVrstaPrijave.Items.Add(new RadComboBoxItem("Usmeno"));
rcbVrstaPrijave.Items.Add(new RadComboBoxItem("Telefon"));
rcbVrstaPrijave.Items.Add(new RadComboBoxItem("E-mail"));
rcbVrstaPrijave.Items.Add(new RadComboBoxItem("Web"));
rcbVrstaPrijave.DataBind();
rcbVrstaPrijave.Text = "'<%# DataBinder.Eval(Container, 'DataItem.VrstaPrijave') %>'";
RadComboBox rcbPrioritet = (RadComboBox)userControl.FindControl("rcbPrioritet");
rcbPrioritet.Items.Add(new RadComboBoxItem("Low"));
rcbPrioritet.Items.Add(new RadComboBoxItem("Normal"));
rcbPrioritet.Items.Add(new RadComboBoxItem("High"));
rcbPrioritet.Items.Add(new RadComboBoxItem("Odmah"));
rcbPrioritet.DataBind();
rcbPrioritet.Text = "'<%# DataBinder.Eval(Container, 'DataItem.Prioritet') %>'";
RadComboBox rcbNadredeniTicket = (RadComboBox)userControl.FindControl("rcbNadredeniTicket");
var nadredenTicketList = (from t in db.Ticket
select t).ToList();
if (nadredenTicketList.Count > 0)
{
rcbNadredeniTicket.DataSource = from t in nadredenTicketList
where t.idFirma == idFirma && t.Zatvoren == false
select new { t.idTicket, t.idNadredeniTicket, OpisTicketa = t.idTicket + " - " + t.Opis };
rcbNadredeniTicket.DataTextField = "OpisTicketa";
rcbNadredeniTicket.DataValueField = "idTicket";
rcbNadredeniTicket.Text = "'<%# DataBinder.Eval(Container, 'DataItem.idNadredeniTicket') %>'";
}
rcbNadredeniTicket.Items.Add(new RadComboBoxItem("Bez nadređenog ticketa", "0"));
rcbNadredeniTicket.DataBind();
RadComboBox rcbPrijavio = (RadComboBox)userControl.FindControl("rcbPrijavio");
rcbPrijavio.DataSource = from k in db.Kontakt
where k.idFirma == idFirma
select new { k.idKontakt, kontaktNaziv = k.Ime + " " + k.Prezime };
rcbPrijavio.Items.Add(new RadComboBoxItem("Bez kontakta", "0"));
rcbPrijavio.DataTextField = "kontaktNaziv";
rcbPrijavio.DataValueField = "idKontakt";
rcbPrijavio.Text = "'<%# DataBinder.Eval(Container, 'DataItem.idKontakt') %>'";
rcbPrijavio.DataBind();
RadComboBox rcbAsset = (RadComboBox)userControl.FindControl("rcbAsset");
var assetList = (from a in db.Asset
where a.idFirma == idFirma
select a).ToList();
if (assetList.Count > 0)
{
var assets = from a in assetList
where a.idFirma == idFirma
select new { a.idAsset, Naziv = a.Naziv + " (" + a.Kontakt.Ime + " " + a.Kontakt.Prezime + ")" };
rcbAsset.DataSource = assets;
rcbAsset.DataTextField = "Naziv";
rcbAsset.DataValueField = "idAsset";
rcbAsset.Text = "'<%# DataBinder.Eval(Container, 'DataItem.Naziv') %>'";
rcbAsset.Items.Add(new RadComboBoxItem("Bez pridruženog asseta", "0"));
rcbAsset.DataBind();
}
if (!e.Item.OwnerTableView.IsItemInserted)
{
int idTicket = Convert.ToInt32(editFormItem.GetDataKeyValue("idTicket"));
ticket = db.Ticket.SingleOrDefault(t => t.idTicket == idTicket);
string tip = ticket.Tip;
rcbTip.Items.FindItemByText(tip).Selected = true;
string status = ticket.Status;
rcbStatus.Items.FindItemByText(status).Selected = true;
string vrstaPrijave = ticket.VrstaPrijave;
rcbVrstaPrijave.Items.FindItemByText(vrstaPrijave).Selected = true;
string prioritet = ticket.Prioritet;
rcbPrioritet.Items.FindItemByText(prioritet).Selected = true;
int kontakt = Convert.ToInt32(ticket.idKontakt);
if (ticket.idKontakt == null)
{
rcbPrijavio.Items.FindItemByValue("0").Selected = true;
}
else
{
rcbPrijavio.Items.FindItemByValue(kontakt.ToString()).Selected = true;
}
int nadredeniTicket = Convert.ToInt32(ticket.idNadredeniTicket);
if (ticket.idNadredeniTicket == null)
{
rcbNadredeniTicket.Items.FindItemByValue("0").Selected = true;
}
else
{
rcbNadredeniTicket.Items.FindItemByValue(nadredeniTicket.ToString()).Selected = true;
}
var ticketAssetCount = from ta in db.TicketAsset
where ta.idTicket == idTicket
select ta;
if (ticketAssetCount.Count() > 0)
{
ticketAsset = db.TicketAsset.SingleOrDefault(ta => ta.idTicket == idTicket);
int asset = Convert.ToInt32(ticketAsset.idAsset);
rcbAsset.Items.FindItemByValue(asset.ToString()).Selected = true;
}
else
{
rcbAsset.Items.FindItemByValue("0").Selected = true;
}
}
else if (e.Item.OwnerTableView.IsItemInserted)
{
var newVals = new System.Collections.Specialized.ListDictionary();
newVals["OpciPrioritet"] = string.Empty;
e.Item.OwnerTableView.InsertItem(newVals);
}
}
}
.aspx:
<telerik:RadGrid ID="gvTicketi" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" CellSpacing="0" GridLines="None"
onneeddatasource="gvTicketi_NeedDataSource"
onitemdatabound="gvTicketi_ItemDataBound"
oninsertcommand="gvTicketi_InsertCommand"
onupdatecommand="gvTicketi_UpdateCommand">
<MasterTableView DataKeyNames="idTicket" CommandItemDisplay="TopAndBottom" InsertItemPageIndexAction="ShowItemOnCurrentPage">
<CommandItemSettings AddNewRecordText="Dodaj novi ticket" RefreshText="Prikaži sve tickete" />
<Columns>
<telerik:GridBoundColumn UniqueName="idTicket" HeaderText="Ticket" DataField="idTicket">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="idKontakt" HeaderText="Kontakt" DataField="idKontakt">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="idManager" HeaderText="Manager" DataField="idManager">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Opis" HeaderText="Opis" DataField="Opis">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="TicketNumber" HeaderText="Broj ticketa" DataField="TicketNumber">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="DatumPrijave" HeaderText="Datum prijave" DataField="DatumPrijave" DataFormatString="{0:dd.MM.yyyy.}">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="VrstaPrijave" HeaderText="Vrsta prijave" DataField="VrstaPrijave">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Tip" HeaderText="Tip" DataField="Tip">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Status" HeaderText="Status" DataField="Status">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Prioritet" HeaderText="Prioritet" DataField="Prioritet">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="OpciPrioritet" HeaderText="Opći prioritet" DataField="OpciPrioritet">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Deadline" HeaderText="Deadline" DataField="DatumDo" DataFormatString="{0:dd.MM.yyyy.}">
</telerik:GridBoundColumn>
<telerik:GridCheckBoxColumn UniqueName="Zatvoren" HeaderText="Zatvoren" DataField="Zatvoren">
</telerik:GridCheckBoxColumn>
<telerik:GridEditCommandColumn UniqueName="EditCommandColumn">
</telerik:GridEditCommandColumn>
<telerik:GridButtonColumn UniqueName="DeleteColumn" Text="Delete" CommandName="Delete"
ConfirmDialogType="RadWindow" ConfirmText="Brisanje ticketa!" />
</Columns>
<EditFormSettings UserControlName="UserControls/TicketUserControl.ascx" EditFormType="WebUserControl">
<EditColumn UniqueName="EditCommandColumn1">
</EditColumn>
</EditFormSettings>
</MasterTableView>
</telerik:RadGrid>
Я очень надеюсь, что вы, ребята, сможете мне помочь, поэтому любая помощь будет оценена!