Hitta Controll i DataGrid, mha System.EventArgs

.NET

1 svar · 339 visningar · startad av Bjuris

Medlem sedan juli 2001514 inlägg
Trådstart#1

Har en datagrid med följande utseende


<Columns>
	<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="&lt;img src=images/ok.gif border=0 Alt='Ok'&gt;"
	CancelText="&lt;img src=images/delete.gif border=0 Alt='Cancel'&gt;" EditText="&lt;img src=Images/edit.gif border=0">
		<ItemStyle Width="15px"></ItemStyle>
	</asp:EditCommandColumn>
	<asp:ButtonColumn Text="&lt;img src=images/delete.gif border=0 Alt='Delete'" CommandName="delete">
		<ItemStyle Width="15px"></ItemStyle>
	</asp:ButtonColumn>
	<asp:BoundColumn DataField="QuestionID" SortExpression="QuestionID" ReadOnly="True" HeaderText="id">
		<ItemStyle Wrap="False"></ItemStyle>
	</asp:BoundColumn>
	<asp:TemplateColumn SortExpression="Topic" HeaderText="Fråga">
		<ItemTemplate>
			<table>
				<tr>
					<td>
						<asp:Label Runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Topic")%>' Width=600 ID="lblTopic"/>
					</td>
				</tr>
				<tr>
					<td>
						<asp:RadioButton id="rbKan" runat="server" GroupName="Svar" Text="Kan"></asp:RadioButton>
						<asp:RadioButton id="rbKanDelvis" runat="server" GroupName="Svar" Text="Delvis"></asp:RadioButton>
						<asp:RadioButton id="rbKanInte" runat="server" GroupName="Svar" Text="Inte alls"></asp:RadioButton>
					</td>
				</tr>
				<tr>
					<td>
						Kommentar<br>
						<asp:textbox id="tbKommentar" runat="server" Width="506px" Rows="3" Height="50px" TextMode="MultiLine"></asp:textbox>
					</td>
				</tr>
			</table>
		</ItemTemplate>
		<EditItemTemplate>
			<asp:TextBox ID="EditTopic" Runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Topic")%>' Width=600/>
		</EditItemTemplate>
	</asp:TemplateColumn>
</Columns>

Den går ut på att det presenteras ett frågeformulär som användaren skall svara på.
När användaren sedan klickar på spara så skall hela DagaGriden skrivas mot en databas mha att gå igenom datasetet rad för rad:

i aspx.cs filen

private void btSave_Click(object sender, System.EventArgs e)
{
	lblError.Visible=true;	//för kontroll
	string test="";			//för kontroll
	foreach(DataGridItem dataGridItem  in DataGridTrace.Items)
	{
		int QuestionID = Convert.ToInt32(DataGridTrace.DataKeys[dataGridItem.ItemIndex]);
		TextBox Test = ((TextBox)DataGridTrace.FindControl("tbKommentar"));		
		test = Test.Text+ "2"; //för kontroll
		lblError.Text += QuestionID.ToString() + ", " +test + "<br>";
	}
}

Jag får ut QuestionID, där är inga problem men när jag vill få ut vad textBoxen tbKommentar innehåller så fungerar det inte, samma gäller mina radiobuttons.

Vad gör jag för fel?

Medlem sedan apr. 20012 266 inlägg
#2

Detta bör nog fungera:

TextBox Test = ((TextBox)[b]dataGridItem[/b].FindControl("tbKommentar"));
256 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)