Repeater Filho(ItemDataBound)
11/10/2012
0
Ola pessoal, sou iniciante na area de desenvolvimento , e estou tentando desenvolver um sistema de questionario, aceito criticas e sugestoes, e estou com dificuldade em capturar os dados da meu dataset de uma tabela filho no RESPOSTAS_ItemDataBound ,eu crio uma logica , se minha coluna ["tipo"] for igual a D, LABEL VISIBLE, assim como outras condicoes.
Desde ja obrigado pela forca pessoal.
Para desenvolver o sistema fiz um questinario dinamico usando dataset relations segue o codigo abaixo:
aspx:
Metodo Classe Dado.cs
Itemdatabound:
pessoal simplesmente ele nao faz nada , desde ja obrigado pela forca..
Desde ja obrigado pela forca pessoal.
Para desenvolver o sistema fiz um questinario dinamico usando dataset relations segue o codigo abaixo:
aspx:
<table cellspacing="2" cellpadding="2" border="2" width="100%"> <asp:Repeater ID="QUESTIONARIO" runat="server" onitemdatabound="QUESTIONARIO_ItemDataBound" > <HeaderTemplate> <th>Número da Questao</th> <th>Pergunta</th> <th>Respostas</th> </HeaderTemplate> <ItemTemplate> <tr> <td><%# DataBinder.Eval(Container.DataItem, "nro_item") %> </td> <td><%# DataBinder.Eval(Container.DataItem, "ds_item") %> </td> <td><asp:repeater id="RESPOSTAS"runat="server"onitemdatabound="RESPOSTAS_ItemDataBound"DataSource='<%# DataBinder.Eval(Container.DataItem, "minhaRelacao") %> ' > <itemtemplate> <fieldset class ="fildPerguntas"> <p><%# DataBinder.Eval(Container.DataItem, "[\"ds_subitem\"]")%>: <asp:Label ID="RatingLabel"runat="server"Text='<%# DataBinder.Eval(Container.DataItem, "[\"tipo\"]") %>' Visible="True"></asp:Label> </p> </fieldset> </itemtemplate> </asp:repeater> </td> </tr> </ItemTemplate> </asp:Repeater> </table>
Metodo Classe Dado.cs
//Monta checklists Lasa //Monta checklists Lasa public const string strQuest = "SELECT * FROM UNI_TB_ITENS"; public const string strQuest2 = "SELECT * FROM UNI_TB_SUBITENS"; public DataSet MontaQuestionario(Repeater Questinario) { var cnn = new SqlConnection(strConexao); var da = new SqlDataAdapter(strQuest,cnn); var ds = new DataSet(); da.Fill(ds, "UNI_TB_ITENS"); ds.Tables["UNI_TB_ITENS"].DefaultView.RowFilter = "ID_CANAL = " + HttpContext.Current.Session["id_canal"] + " AND ID_PROJETO='2' "; da = new SqlDataAdapter(strQuest2, cnn); da.Fill(ds, "UNI_TB_SUBITENS"); try { ds.Relations.Add("minhaRelacao", ds.Tables["uni_tb_itens"].Columns["id_item"], ds.Tables["uni_tb_subitens"].Columns["id_item"]); ds.Relations["minhaRelacao"].Nested = true; Questinario.DataSource = ds.Tables["uni_tb_itens"]; Questinario.DataBind(); } catch (SqlException ex) { HttpContext.Current.Response.Write(ex.Message); } return ds; } }
Itemdatabound:
protected void QUESTIONARIO_ItemDataBound(object sender, RepeaterItemEventArgs e) { ListItemType lt = e.Item.ItemType; if (lt == ListItemType.Item || lt == ListItemType.AlternatingItem) { DataRowView dv = e.Item.DataItem as DataRowView; if (dv != null) { Repeater nestedRepeater = e.Item.FindControl("RESPOSTAS") as Repeater; if (nestedRepeater != null) { nestedRepeater.DataSource = ((DataRowView)e.Item.DataItem).CreateChildView("minhaRelacao"); nestedRepeater.DataBind(); nestedRepeater.ItemDataBound += RESPOSTAS_ItemDataBound; } } } } protected void RESPOSTAS_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item) { DataRowView dv = e.Item.DataItem as DataRowView; if (dv.Row["tipo"].ToString() == "D") { Label RatingLabel= (Label)e.Item.FindControl("Label1"); //ele ignora RatingLabel.Visible = true; } } }
pessoal simplesmente ele nao faz nada , desde ja obrigado pela forca..
Rodrigolima
Curtir tópico
+ 0
Responder
Posts
11/10/2012
Rodrigolima
ola pessoal, sou iniciante na area de desenvolvimento , e estou tentando desenvolver um sistema de questionario, aceito criticas e sugestoes, e estou com dificuldade em capturar os dados da meu dataset de uma tabela filho no respostas_itemdatabound ,eu crio uma logica , se minha coluna ["tipo"] for igual a d, label visible, assim como outras condicoes.
desde ja obrigado pela forca pessoal.
para desenvolver o sistema fiz um questinario dinamico usando dataset relations segue o codigo abaixo:
aspx:
<table cellspacing="2" cellpadding="2" border="2" width="100%">
<asp:repeater id="questionario" runat="server" onitemdatabound="questionario_itemdatabound"
>
<headertemplate>
<th>número da questao</th>
<th>pergunta</th>
<th>respostas</th>
</headertemplate>
<itemtemplate>
<tr>
<td><%# databinder.eval(container.dataitem, "nro_item") %> </td>
<td><%# databinder.eval(container.dataitem, "ds_item") %> </td>
<td><asp:repeater id="respostas"runat="server"onitemdatabound="respostas_itemdatabound">
<itemtemplate>
<fieldset class ="fildperguntas">
<p><%# databinder.eval(container.dataitem, "[\"ds_subitem\"]")%>:
<asp:label id="ratinglabel"runat="server"text='<%# databinder.eval(container.dataitem, "[\"tipo\"]") %>' visible="true"></asp:label>
</p>
</fieldset>
</itemtemplate>
</asp:repeater>
</td>
</tr>
</itemtemplate>
</asp:repeater>
</table>
metodo classe dado.cs
//monta checklists lasa
//monta checklists lasa
public const string strquest = "select * from uni_tb_itens";
public const string strquest2 = "select * from uni_tb_subitens";
public dataset montaquestionario(repeater questinario)
{
var cnn = new sqlconnection(strconexao);
var da = new sqldataadapter(strquest,cnn);
var ds = new dataset();
da.fill(ds, "uni_tb_itens");
ds.tables["uni_tb_itens"].defaultview.rowfilter = "id_canal = " + httpcontext.current.session["id_canal"] + " and id_projeto='2' ";
da = new sqldataadapter(strquest2, cnn);
da.fill(ds, "uni_tb_subitens");
try
{
ds.relations.add("minharelacao",
ds.tables["uni_tb_itens"].columns["id_item"],
ds.tables["uni_tb_subitens"].columns["id_item"]);
ds.relations["minharelacao"].nested = true;
questinario.datasource = ds.tables["uni_tb_itens"];
questinario.databind();
}
catch (sqlexception ex)
{
httpcontext.current.response.write(ex.message);
}
return ds;
}
}
itemdatabound:
protected void questionario_itemdatabound(object sender, repeateritemeventargs e)
{
listitemtype lt = e.item.itemtype;
if (lt == listitemtype.item || lt == listitemtype.alternatingitem)
{
datarowview dv = e.item.dataitem as datarowview;
if (dv != null)
{
repeater nestedrepeater = e.item.findcontrol("respostas") as repeater;
if (nestedrepeater != null)
{
nestedrepeater.datasource = ((datarowview)e.item.dataitem).createchildview("minharelacao");
nestedrepeater.databind();
nestedrepeater.itemdatabound += respostas_itemdatabound;
}
}
}
}
protected void respostas_itemdatabound(object sender, repeateritemeventargs e)
{
if (e.item.itemtype == listitemtype.item)
{
datarowview dv = e.item.dataitem as datarowview;
if (dv.row["tipo"].tostring() == "d")
{
label ratinglabel= (label)e.item.findcontrol("label1"); //ele ignora
ratinglabel.visible = true;
}
}
}
pessoal simplesmente ele nao faz nada , desde ja obrigado pela forca..
desde ja obrigado pela forca pessoal.
para desenvolver o sistema fiz um questinario dinamico usando dataset relations segue o codigo abaixo:
aspx:
<table cellspacing="2" cellpadding="2" border="2" width="100%">
<asp:repeater id="questionario" runat="server" onitemdatabound="questionario_itemdatabound"
>
<headertemplate>
<th>número da questao</th>
<th>pergunta</th>
<th>respostas</th>
</headertemplate>
<itemtemplate>
<tr>
<td><%# databinder.eval(container.dataitem, "nro_item") %> </td>
<td><%# databinder.eval(container.dataitem, "ds_item") %> </td>
<td><asp:repeater id="respostas"runat="server"onitemdatabound="respostas_itemdatabound">
<itemtemplate>
<fieldset class ="fildperguntas">
<p><%# databinder.eval(container.dataitem, "[\"ds_subitem\"]")%>:
<asp:label id="ratinglabel"runat="server"text='<%# databinder.eval(container.dataitem, "[\"tipo\"]") %>' visible="true"></asp:label>
</p>
</fieldset>
</itemtemplate>
</asp:repeater>
</td>
</tr>
</itemtemplate>
</asp:repeater>
</table>
metodo classe dado.cs
//monta checklists lasa
//monta checklists lasa
public const string strquest = "select * from uni_tb_itens";
public const string strquest2 = "select * from uni_tb_subitens";
public dataset montaquestionario(repeater questinario)
{
var cnn = new sqlconnection(strconexao);
var da = new sqldataadapter(strquest,cnn);
var ds = new dataset();
da.fill(ds, "uni_tb_itens");
ds.tables["uni_tb_itens"].defaultview.rowfilter = "id_canal = " + httpcontext.current.session["id_canal"] + " and id_projeto='2' ";
da = new sqldataadapter(strquest2, cnn);
da.fill(ds, "uni_tb_subitens");
try
{
ds.relations.add("minharelacao",
ds.tables["uni_tb_itens"].columns["id_item"],
ds.tables["uni_tb_subitens"].columns["id_item"]);
ds.relations["minharelacao"].nested = true;
questinario.datasource = ds.tables["uni_tb_itens"];
questinario.databind();
}
catch (sqlexception ex)
{
httpcontext.current.response.write(ex.message);
}
return ds;
}
}
itemdatabound:
protected void questionario_itemdatabound(object sender, repeateritemeventargs e)
{
listitemtype lt = e.item.itemtype;
if (lt == listitemtype.item || lt == listitemtype.alternatingitem)
{
datarowview dv = e.item.dataitem as datarowview;
if (dv != null)
{
repeater nestedrepeater = e.item.findcontrol("respostas") as repeater;
if (nestedrepeater != null)
{
nestedrepeater.datasource = ((datarowview)e.item.dataitem).createchildview("minharelacao");
nestedrepeater.databind();
nestedrepeater.itemdatabound += respostas_itemdatabound;
}
}
}
}
protected void respostas_itemdatabound(object sender, repeateritemeventargs e)
{
if (e.item.itemtype == listitemtype.item)
{
datarowview dv = e.item.dataitem as datarowview;
if (dv.row["tipo"].tostring() == "d")
{
label ratinglabel= (label)e.item.findcontrol("label1"); //ele ignora
ratinglabel.visible = true;
}
}
}
pessoal simplesmente ele nao faz nada , desde ja obrigado pela forca..
Responder
Clique aqui para fazer login e interagir na Comunidade :)