I'm having some problems with RadGrid control. I added couple of controls (mostly TextBoxes and DropDownLists) so I could filter the RadGrid records. Filtering works fine, but whenever I try to Edit or Delete the row RadGrid picks the wrong record and I'm clueless about what to do to fix it.
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<div class="fieldset">
<fieldset>
<legend>Tvrtka</legend>
<telerik:RadComboBox ID="rcbTvrtka" runat="server" AppendDataBoundItems="true" Skin="Hay">
</telerik:RadComboBox>
</fieldset>
</div>
<div class="fieldset">
<fieldset>
<legend>Tip usera</legend>
<telerik:RadComboBox ID="rcbTipUsera" runat="server" AppendDataBoundItems="true"
Skin="Hay">
</telerik:RadComboBox>
</fieldset>
</div>
<div class="fieldset3">
<fieldset>
<legend>Aktivan</legend>
<asp:CheckBox ID="chkAktivan" runat="server" />
</fieldset>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnReset" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<div class="fieldset3">
<fieldset>
<legend>Pretraga</legend>
<asp:Button ID="btnSearch" runat="server" Text="Traži" OnClick="btnSearch_Click" />
</fieldset>
</div>
<div class="fieldset3">
<fieldset>
<legend>Reset</legend>
<asp:Button ID="btnReset" runat="server" Text="Resetiraj" OnClick="btnReset_Click" />
</fieldset>
</div>
<telerik:RadGrid ID="gvKontakti" runat="server" AllowPaging="True" AllowSorting="True"
PageSize="25" AutoGenerateColumns="False" CellSpacing="0" GridLines="None" OnNeedDataSource="gvKontakti_NeedDataSource"
AllowFilteringByColumn="False" Skin="Hay" OnItemDataBound="gvKontakti_ItemDataBound"
OnPreRender="gvKontakti_PreRender" OnUpdateCommand="gvKontakti_UpdateCommand"
OnDetailTableDataBind="gvKontakti_DetailTableDataBind" OnInsertCommand="gvKontakti_InsertCommand"
OnItemCommand="gvKontakti_ItemCommand">
<MasterTableView DataKeyNames="idKontakt" CommandItemDisplay="Top" InsertItemPageIndexAction="ShowItemOnCurrentPage"
TableLayout="Fixed" Caption="Kontakti">
<DetailTables>
<telerik:GridTableView Name="Assets" Width="100%" CommandItemDisplay="None" Caption="Asseti">
<ParentTableRelation>
<telerik:GridRelationFields DetailKeyField="idKontakt" MasterKeyField="idKontakt" />
</ParentTableRelation>
<CommandItemSettings AddNewRecordText="Dodaj novi item" ShowAddNewRecordButton="true" />
<Columns>
<telerik:GridBoundColumn UniqueName="Naziv" DataField="NazivAsseta" HeaderText="Naziv"
HeaderStyle-Width="200px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="DatumGarancije" HeaderText="Datum garancije"
DataField="DatumGarancije" DataFormatString="{0:dd.MM.yyyy.}" HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
</Columns>
<EditFormSettings UserControlName="UserControls/TicketAssetUserControl.ascx" EditFormType="WebUserControl">
<EditColumn UniqueName="EditCommandColumnItem1">
</EditColumn>
</EditFormSettings>
</telerik:GridTableView>
</DetailTables>
<DetailTables>
<telerik:GridTableView DataKeyNames="idTicket" Name="Tickets" CommandItemDisplay="None"
Caption="Incidenti">
<Columns>
<telerik:GridBoundColumn UniqueName="TicketNumber" HeaderText="Broj incidenta" DataField="TicketNumber"
HeaderStyle-Width="70px">
</telerik:GridBoundColumn>
<telerik:GridDateTimeColumn DataField="DatumPrijave" HeaderText="Datum prijave" UniqueName="DatumPrijave"
PickerType="DatePicker" DataFormatString="{0:dd.MM.yyyy.}" HeaderStyle-Width="80px">
</telerik:GridDateTimeColumn>
<telerik:GridTemplateColumn UniqueName="Opis" HeaderText="Opis" DataField="Opis"
HeaderStyle-Width="400px">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Opis") %>'>
</asp:Label>
<telerik:RadToolTip ID="RadToolTip1" runat="server" TargetControlID="Label1" Width="150px"
RelativeTo="Element" Position="MiddleRight" EnableShadow="false">
<%# DataBinder.Eval(Container, "DataItem.Biljeske") %>
</telerik:RadToolTip>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn UniqueName="Status" HeaderText="Status" DataField="Status"
HeaderStyle-Width="80px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Prioritet" HeaderText="Prioritet" DataField="Prioritet"
HeaderStyle-Width="70px">
</telerik:GridBoundColumn>
<telerik:GridDateTimeColumn DataField="DatumDo" HeaderText="Deadline" UniqueName="Deadline"
PickerType="DatePicker" DataFormatString="{0:dd.MM.yyyy.}" HeaderStyle-Width="80px">
</telerik:GridDateTimeColumn>
<telerik:GridBoundColumn UniqueName="Tip" HeaderText="Tip" DataField="Tip" HeaderStyle-Width="80px">
</telerik:GridBoundColumn>
<telerik:GridCheckBoxColumn UniqueName="Naplacen" HeaderText="Naplaćen" DataField="IzdanRacun"
HeaderStyle-Width="65px">
</telerik:GridCheckBoxColumn>
<telerik:GridCheckBoxColumn UniqueName="Zatvoren" HeaderText="Zatvoren" DataField="Zatvoren"
HeaderStyle-Width="60px">
</telerik:GridCheckBoxColumn>
<telerik:GridBoundColumn UniqueName="DailySum" HeaderText="Efektivno vrijeme" DataField="DailySum"
HeaderStyle-Width="70px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="DailyCount" HeaderText="Broj dolazaka" DataField="DailyCount"
HeaderStyle-Width="70px">
</telerik:GridBoundColumn>
</Columns>
</telerik:GridTableView>
</DetailTables>
<CommandItemSettings ShowAddNewRecordButton="true" AddNewRecordText="Dodaj novi kontakt" />
<RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
</RowIndicatorColumn>
<ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
</ExpandCollapseColumn>
<Columns>
<telerik:GridEditCommandColumn UniqueName="EditCommandColumn" EditText="Detalji"
HeaderStyle-Width="50px">
</telerik:GridEditCommandColumn>
<telerik:GridBoundColumn UniqueName="Kontakt" DataField="Naziv" HeaderText="Kontakt"
HeaderStyle-Width="150px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Tvrtka" HeaderText="Tvrtka" DataField="Tvrtka"
HeaderStyle-Width="150px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Funkcija" HeaderText="Funkcija" DataField="Funkcija"
HeaderStyle-Width="150px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Tel1" HeaderText="Telefon 1" DataField="Tel1"
HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Tel2" HeaderText="Telefon 2" DataField="Tel2"
HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Mob1" HeaderText="Mobitel 1" DataField="Mob1"
HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Mob2" HeaderText="Mobitel 2" DataField="Mob2"
HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Email1" HeaderText="E-mail 1" DataField="Email1"
HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Adresa1" HeaderText="Adresa 1" DataField="Adresa1"
HeaderStyle-Width="150px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Grad" HeaderText="Grad" DataField="Grad" HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
<telerik:GridCheckBoxColumn UniqueName="Aktivan" HeaderText="Aktivan" DataField="Aktivan"
HeaderStyle-Width="80px">
</telerik:GridCheckBoxColumn>
<telerik:GridButtonColumn UniqueName="DeleteColumn" Text="Delete" CommandName="Delete"
ConfirmDialogType="RadWindow" ConfirmText="Brisanjem kontakta brišu se i svi asseti!"
HeaderStyle-Width="50px">
</telerik:GridButtonColumn>
</Columns>
<EditFormSettings UserControlName="UserControls/KontaktUserControl.ascx" EditFormType="WebUserControl">
<EditColumn UniqueName="EditCommandColumn1">
</EditColumn>
</EditFormSettings>
</MasterTableView>
<FilterMenu EnableImageSprites="False">
</FilterMenu>
<HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Hay">
</HeaderContextMenu>
</telerik:RadGrid>
</asp:Content>
TSEntities db = new TSEntities();
protected void Page_Load(object sender, EventArgs e)
{
int idAuthenticatedUser = Convert.ToInt32(Session["authenticatedUI"]);
Kontakt kontakt = new Kontakt();
kontakt = db.Kontakt.SingleOrDefault(k => k.idKontakt == idAuthenticatedUser);
if (Session["authenticatedUI"] == null)
{
Response.Redirect("Login.aspx");
}
else if (kontakt.idOvlasti == 3 || kontakt.idOvlasti == 4)
{
if (Request.RawUrl != "/KontaktiWebForm.aspx?idk=" + idAuthenticatedUser)
{
Response.Redirect("KontaktiWebForm.aspx?idk=" + idAuthenticatedUser);
}
}
if (!IsPostBack)
{
Populate();
chkAktivan.Checked = true;
}
}
protected void Populate()
{
var tvrtkaList = (from t in db.Firma
select t).ToList();
var tvrtka = from t in tvrtkaList
orderby t.Naziv
select new { t.idFirma, t.Naziv };
rcbTvrtka.Items.Clear();
rcbTvrtka.Items.Add(new RadComboBoxItem("Odaberi tvrtku", "0"));
rcbTvrtka.DataSource = tvrtka;
rcbTvrtka.DataTextField = "Naziv";
rcbTvrtka.DataValueField = "idFirma";
rcbTvrtka.DataBind();
var userType = from u in db.Ovlasti
select new { u.idOvlasti, u.Naziv };
rcbTipUsera.Items.Add(new RadComboBoxItem("Odaberi tip", "0"));
rcbTipUsera.DataSource = userType;
rcbTipUsera.DataTextField = "Naziv";
rcbTipUsera.DataValueField = "idOvlasti";
rcbTipUsera.DataBind();
}
protected void gvKontakti_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
int idKontakt = Convert.ToInt32(Request.QueryString["idk"]);
int idAuthKontakt = Convert.ToInt32(Session["authenticatedUI"]);
if (idKontakt > 0 && idAuthKontakt == idKontakt)
{
gvKontakti.DataSource = from k in db.Kontakt
where k.idKontakt == idKontakt && k.Aktivan == true
orderby k.Prezime, k.Ime
select new { Tvrtka = k.Firma.Naziv, k.idKontakt, Naziv = k.Ime + " " + k.Prezime, Funkcija = k.Funkcija, k.Ime, k.Prezime, k.Tel1, k.Tel2, k.Mob1, k.Mob2, k.Email1, k.Email2, k.Fax, k.Adresa1, k.Adresa2, k.Adresa3, k.Grad, k.PostanskiBroj, k.Drzava, k.Biljeske, k.Aktivan, k.Username, k.Password };
}
else if (idKontakt > 0 && idAuthKontakt != idKontakt)
{
gvKontakti.DataSource = from k in db.Kontakt
where k.idKontakt == idKontakt && k.Aktivan == true
orderby k.Prezime, k.Ime
select new { Tvrtka = k.Firma.Naziv, k.idKontakt, Naziv = k.Ime + " " + k.Prezime, Funkcija = k.Funkcija, k.Ime, k.Prezime, k.Tel1, k.Tel2, k.Mob1, k.Mob2, k.Email1, k.Email2, k.Fax, k.Adresa1, k.Adresa2, k.Adresa3, k.Grad, k.PostanskiBroj, k.Drzava, k.Biljeske, k.Aktivan, k.Username, k.Password };
}
else
{
gvKontakti.DataSource = from k in db.Kontakt
where k.Aktivan == true
orderby k.Prezime, k.Ime
select new { Tvrtka = k.Firma.Naziv, k.idKontakt, Naziv = k.Ime + " " + k.Prezime, Funkcija = k.Funkcija, k.Ime, k.Prezime, k.Tel1, k.Tel2, k.Mob1, k.Mob2, k.Email1, k.Email2, k.Fax, k.Adresa1, k.Adresa2, k.Adresa3, k.Grad, k.PostanskiBroj, k.Drzava, k.Biljeske, k.Aktivan, k.Username, k.Password };
}
}
protected void gvKontakti_ItemDataBound(object sender, GridItemEventArgs e)
{
int idKontakt = Convert.ToInt32(Request.QueryString["idk"]);
int idAuthKontakt = Convert.ToInt32(Session["authenticatedUI"]);
if ((e.Item is GridEditFormItem) && e.Item.IsInEditMode)
{
UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
GridEditFormItem editFormItem = (GridEditFormItem)e.Item;
Button btnUpdate = (Button)userControl.FindControl("btnUpdate");
TextBox txtUsername = (TextBox)userControl.FindControl("txtUsername");
TextBox txtPassword = (TextBox)userControl.FindControl("txtPassword");
RadComboBox rcbTvrtka = (RadComboBox)userControl.FindControl("rcbTvrtka");
RadComboBox rcbOvlasti = (RadComboBox)userControl.FindControl("rcbOvlasti");
Kontakt authKontakt = new Kontakt();
authKontakt = db.Kontakt.SingleOrDefault(k => k.idKontakt == idAuthKontakt);
var tvrtkeList = (from t in db.Firma
orderby t.Naziv
select t).ToList();
rcbTvrtka.DataSource = from t in tvrtkeList
select new { t.idFirma, t.Naziv };
rcbTvrtka.DataTextField = "Naziv";
rcbTvrtka.DataValueField = "idFirma";
rcbTvrtka.Text = "'<%# DataBinder.Eval(Container, 'DataItem.idFirma') %>'";
rcbTvrtka.DataBind();
rcbOvlasti.DataSource = from o in db.Ovlasti
select o;
rcbOvlasti.DataTextField = "Naziv";
rcbOvlasti.DataValueField = "idOvlasti";
rcbOvlasti.Text = "'<%# DataBinder.Eval(Container, 'DataItem.idOvlasti') %>'";
rcbOvlasti.DataBind();
rcbOvlasti.Items.FindItemByValue("4").Selected = true;
if (authKontakt.idOvlasti == 4 || authKontakt.idOvlasti == 3 || authKontakt.idOvlasti == 2)
{
rcbOvlasti.Enabled = false;
}
if (authKontakt.idOvlasti == 4 || authKontakt.idOvlasti == 3)
{
rcbTvrtka.Enabled = false;
}
txtUsername.ReadOnly = false;
txtPassword.ReadOnly = false;
if (!e.Item.OwnerTableView.IsItemInserted)
{
Kontakt kontakt = new Kontakt();
int idKontaktSelected = Convert.ToInt32(editFormItem.GetDataKeyValue("idKontakt"));
kontakt = db.Kontakt.SingleOrDefault(k => k.idKontakt == idKontaktSelected);
if (idKontaktSelected == idAuthKontakt || authKontakt.idOvlasti == 2 || authKontakt.idOvlasti == 1)
{
txtUsername.ReadOnly = false;
txtPassword.ReadOnly = false;
btnUpdate.Visible = true;
}
else
{
txtUsername.ReadOnly = true;
txtPassword.ReadOnly = true;
btnUpdate.Visible = false;
}
int idTvrtka = Convert.ToInt16(kontakt.idFirma);
rcbTvrtka.Items.FindItemByValue(idTvrtka.ToString()).Selected = true;
Session["rcbTvrtka"] = idTvrtka;
rcbOvlasti.Items.FindItemByValue(kontakt.idOvlasti.ToString()).Selected = true;
CheckBox chkAktivan = (CheckBox)userControl.FindControl("chkAktivan");
if (kontakt.Aktivan == true)
{
chkAktivan.Checked = true;
}
else
{
chkAktivan.Checked = false;
}
}
}
}
protected void gvKontakti_PreRender(object sender, EventArgs e)
{
int idKontakt = Convert.ToInt32(Request.QueryString["idk"]);
if (!this.IsPostBack && idKontakt > 0)
{
this.gvKontakti.MasterTableView.Items[0].Edit = true;
this.gvKontakti.MasterTableView.Rebind();
}
}
protected void gvKontakti_UpdateCommand(object sender, GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
RadComboBox rcbOvlasti = (RadComboBox)userControl.FindControl("rcbOvlasti");
RadComboBox rcbTvrtka = (RadComboBox)userControl.FindControl("rcbTvrtka");
int idKontakt = Convert.ToInt32(editedItem.GetDataKeyValue("idKontakt"));
Kontakt kontakt = new Kontakt();
kontakt = db.Kontakt.SingleOrDefault(k => k.idKontakt == idKontakt);
int idFirma = Convert.ToInt32(rcbTvrtka.SelectedItem.Value);
kontakt.idFirma = Convert.ToInt32(rcbTvrtka.SelectedItem.Value);
kontakt.Ime = (userControl.FindControl("txtIme") as TextBox).Text;
kontakt.Prezime = (userControl.FindControl("txtPrezime") as TextBox).Text;
kontakt.Adresa1 = (userControl.FindControl("txtAdresa1") as TextBox).Text;
kontakt.Adresa2 = (userControl.FindControl("txtAdresa2") as TextBox).Text;
kontakt.Adresa3 = (userControl.FindControl("txtAdresa3") as TextBox).Text;
kontakt.Biljeske = (userControl.FindControl("txtBiljeske") as TextBox).Text;
kontakt.Funkcija = (userControl.FindControl("txtFunkcija") as TextBox).Text;
kontakt.Prezime = (userControl.FindControl("txtPrezime") as TextBox).Text;
kontakt.Grad = (userControl.FindControl("txtGrad") as TextBox).Text;
kontakt.Drzava = (userControl.FindControl("txtDrzava") as TextBox).Text;
kontakt.PostanskiBroj = (userControl.FindControl("txtPBR") as TextBox).Text;
kontakt.Mob1 = (userControl.FindControl("txtMob1") as TextBox).Text;
kontakt.Mob2 = (userControl.FindControl("txtMob2") as TextBox).Text;
kontakt.Tel1 = (userControl.FindControl("txtTel1") as TextBox).Text;
kontakt.Tel2 = (userControl.FindControl("txtTel2") as TextBox).Text;
kontakt.Fax = (userControl.FindControl("txtFax") as TextBox).Text;
kontakt.Email1 = (userControl.FindControl("txtEmail1") as TextBox).Text;
kontakt.Email2 = (userControl.FindControl("txtEmail2") as TextBox).Text;
kontakt.Aktivan = (userControl.FindControl("chkAktivan") as CheckBox).Checked;
kontakt.idOvlasti = Convert.ToInt32(rcbOvlasti.SelectedItem.Value);
kontakt.Username = (userControl.FindControl("txtUsername") as TextBox).Text;
string password = (userControl.FindControl("txtPassword") as TextBox).Text;
string passwordHash = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5");
if (password.Length > 0)
{
kontakt.Password = passwordHash;
}
db.SaveChanges();
}
protected void gvKontakti_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
{
GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
int idKontakt = Convert.ToInt16(dataItem.GetDataKeyValue("idKontakt"));
switch (e.DetailTableView.Name)
{
case "Assets":
{
e.DetailTableView.DataSource = from a in db.Asset
where a.idKontakt == idKontakt && a.Aktivan == true
select new {a.idKontakt, NazivAsseta = a.Naziv, a.DatumGarancije };
}
break;
case "Tickets":
{
var ticketList = (from t in db.Ticket
where t.idKontakt == idKontakt && t.Zatvoren == false
select t).ToList();
e.DetailTableView.DataSource = from t in ticketList
where t.Zatvoren == false
orderby t.idTicket, t.RedniBroj, t.DatumPrijave
select new
{
t.idTicket,
t.idFirma,
t.idKontakt,
t.idManager,
t.idNadredeniTicket,
TicketNumber = t.idNadredeniTicket + "-" + t.RedniBroj,
t.Biljeske,
t.DatumDo,
t.DatumPrijave,
t.OpciPrioritet,
t.Opis,
t.OpisZatvoren,
t.Prioritet,
t.Status,
t.Tip,
t.VrstaPrijave,
t.Zatvoren,
NazivKontakta = t.Kontakt == null ? "Bez kontakta" : t.Kontakt.Ime + " " + t.Kontakt.Prezime
};
}
break;
}
}
protected void gvKontakti_InsertCommand(object sender, GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
TSEntities db = new TSEntities();
Kontakt kontakt = new Kontakt();
RadComboBox rcbTvrtka = (RadComboBox)userControl.FindControl("rcbTvrtka");
RadComboBox rcbOvlasti = (RadComboBox)userControl.FindControl("rcbOvlasti");
kontakt.idFirma = Convert.ToInt32(rcbTvrtka.SelectedItem.Value);
kontakt.Ime = (userControl.FindControl("txtIme") as TextBox).Text;
kontakt.Prezime = (userControl.FindControl("txtPrezime") as TextBox).Text;
kontakt.Adresa1 = (userControl.FindControl("txtAdresa1") as TextBox).Text;
kontakt.Adresa2 = (userControl.FindControl("txtAdresa2") as TextBox).Text;
kontakt.Adresa3 = (userControl.FindControl("txtAdresa3") as TextBox).Text;
kontakt.Biljeske = (userControl.FindControl("txtBiljeske") as TextBox).Text;
kontakt.Funkcija = (userControl.FindControl("txtFunkcija") as TextBox).Text;
kontakt.Prezime = (userControl.FindControl("txtPrezime") as TextBox).Text;
kontakt.Grad = (userControl.FindControl("txtGrad") as TextBox).Text;
kontakt.Drzava = (userControl.FindControl("txtDrzava") as TextBox).Text;
kontakt.PostanskiBroj = (userControl.FindControl("txtPBR") as TextBox).Text;
kontakt.Mob1 = (userControl.FindControl("txtMob1") as TextBox).Text;
kontakt.Mob2 = (userControl.FindControl("txtMob2") as TextBox).Text;
kontakt.Tel1 = (userControl.FindControl("txtTel1") as TextBox).Text;
kontakt.Tel2 = (userControl.FindControl("txtTel2") as TextBox).Text;
kontakt.Fax = (userControl.FindControl("txtFax") as TextBox).Text;
kontakt.Email1 = (userControl.FindControl("txtEmail1") as TextBox).Text;
kontakt.Email2 = (userControl.FindControl("txtEmail2") as TextBox).Text;
kontakt.Aktivan = (userControl.FindControl("chkAktivan") as CheckBox).Checked;
kontakt.idOvlasti = Convert.ToInt32(rcbOvlasti.SelectedItem.Value);
kontakt.Username = (userControl.FindControl("txtUsername") as TextBox).Text;
string passwordHash = FormsAuthentication.HashPasswordForStoringInConfigFile((userControl.FindControl("txtPassword") as TextBox).Text, "MD5");
kontakt.Password = passwordHash;
db.AddToKontakt(kontakt);
db.SaveChanges();
}
protected void btnSearch_Click(object sender, EventArgs e)
{
var kontakti = from k in db.Kontakt
select k;
int idTipUsera = Convert.ToInt32(rcbTipUsera.SelectedValue);
int idTvrtka = Convert.ToInt32(rcbTvrtka.SelectedValue);
if (rcbTvrtka.SelectedValue != "0")
{
kontakti = kontakti.Where(k => k.idFirma == idTvrtka);
}
if (rcbTipUsera.SelectedValue != "0")
{
kontakti = kontakti.Where(k => k.idOvlasti == idTipUsera);
}
if (chkAktivan.Checked == true)
{
kontakti = kontakti.Where(k => k.Aktivan == true);
}
else
{
kontakti = kontakti.Where(k => k.Aktivan == false);
}
int idKontakt = Convert.ToInt32(Request.QueryString["idk"]);
int idAuthKontakt = Convert.ToInt32(Session["authenticatedUI"]);
if (idKontakt > 0 && idAuthKontakt == idKontakt)
{
gvKontakti.DataSource = from k in kontakti
where k.idKontakt == idKontakt
orderby k.Prezime, k.Ime
select new { Tvrtka = k.Firma.Naziv, k.idKontakt, Naziv = k.Ime + " " + k.Prezime, Funkcija = k.Funkcija, k.Ime, k.Prezime, k.Tel1, k.Tel2, k.Mob1, k.Mob2, k.Email1, k.Email2, k.Fax, k.Adresa1, k.Adresa2, k.Adresa3, k.Grad, k.PostanskiBroj, k.Drzava, k.Biljeske, k.Aktivan, k.Username, k.Password };
}
else if (idKontakt > 0 && idAuthKontakt != idKontakt)
{
gvKontakti.DataSource = from k in kontakti
where k.idKontakt == idKontakt
orderby k.Prezime, k.Ime
select new { Tvrtka = k.Firma.Naziv, k.idKontakt, Naziv = k.Ime + " " + k.Prezime, Funkcija = k.Funkcija, k.Ime, k.Prezime, k.Tel1, k.Tel2, k.Mob1, k.Mob2, k.Email1, k.Email2, k.Fax, k.Adresa1, k.Adresa2, k.Adresa3, k.Grad, k.PostanskiBroj, k.Drzava, k.Biljeske, k.Aktivan, k.Username, k.Password };
}
else
{
gvKontakti.DataSource = from k in kontakti
orderby k.Prezime, k.Ime
select new { Tvrtka = k.Firma.Naziv, k.idKontakt, Naziv = k.Ime + " " + k.Prezime, Funkcija = k.Funkcija, k.Ime, k.Prezime, k.Tel1, k.Tel2, k.Mob1, k.Mob2, k.Email1, k.Email2, k.Fax, k.Adresa1, k.Adresa2, k.Adresa3, k.Grad, k.PostanskiBroj, k.Drzava, k.Biljeske, k.Aktivan, k.Username, k.Password };
}
gvKontakti.DataBind();
}
protected void gvKontakti_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
GridEditableItem editedItem = e.Item as GridEditableItem;
int idKontakt = Convert.ToInt32(editedItem.GetDataKeyValue("idKontakt"));
var assets = from a in db.Asset
where a.idKontakt == idKontakt
select a;
Kontakt kontakt = db.Kontakt.SingleOrDefault(k => k.idKontakt == idKontakt);
int assetCount = db.Asset.Count(a => a.idKontakt == idKontakt);
if (assetCount != 0)
{
foreach (var asset in assets)
{
db.DeleteObject(asset);
}
}
db.DeleteObject(kontakt);
db.SaveChanges();
}
}
protected void btnReset_Click(object sender, EventArgs e)
{
rcbTipUsera.Items.FindItemByValue("0").Selected = true;
rcbTvrtka.Items.FindItemByValue("0").Selected = true;
chkAktivan.Checked = true;
gvKontakti.Rebind();
}
I apologize for the size of code posted but I think it could be useful to understand my problem better.