昨天的问题还没解决!大家帮帮忙吧

roc_gw 2003-12-24 01:18:10
CheckBox ch =(CheckBox)this.message.FindControl("yn");
if (this.yn.Checked)
{
qq="1";
}
else
{
qq="0";
}

message为一个Repeater,叫yn的CheckBox在message里,想提取出yn的值时总是报以下错误,快帮帮忙吧

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
...全文
32 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
roc_gw 2003-12-24
  • 打赏
  • 举报
回复
帮我看看 pp的值总取第一条的
public void yn_Click2(object sender,CommandEventArgs e)
{
string commandText;
string qq;
CheckBox ch=new CheckBox();;
foreach (RepeaterItem ri in message.Items)
{
ch =(CheckBox) ri.FindControl("yn");

if (ch!=null && ch.Checked)
{
qq="1";
}
else
{
qq="0";
}
commandText = "UPDATE 留言 set IO='"+ qq +"' where ID = " + e.CommandArgument;
conn.Open();
SqlCommand comm = new SqlCommand(commandText,conn);
comm.ExecuteNonQuery();
conn.Close();
Response.Redirect("viewG.aspx");

}
}
nnh 2003-12-24
  • 打赏
  • 举报
回复
希望這個例子對你有幫助:

<%@ Page Language="vb" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="VB" runat="server">
dim MyConnection As OleDbConnection

Sub Page_Load(s As Object, E As EventArgs)
MyConnection = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\inetpub\wwwroot\nhonline\datagrid\kk.mdb")
If Not (IsPostBack) then
BindDataGrid()
End If
End Sub

Sub BindDataGrid()
dim dadTitles as OleDbDataAdapter
dim dstTitles as DataSet
dadTitles=new OleDbDataAdapter("select * from [min] order by id desc",MyConnection)
dstTitles=new DataSet
dadTitles.fill(dstTitles)
MyDataGrid.DataSource=dstTitles
MyDataGrid.DataBind()
End Sub

Sub Mydatagrid_PageIndexChanged(s as object,e as DataGridPageChangedEventargs)
MyDataGrid.CurrentPageIndex=e.newPageIndex
BindDataGrid()
End Sub

Sub btnSelect_OnClick(ByVal sender As Object, ByVal e As EventArgs)
Dim myDataGridItem As DataGridItem
Dim chkSelected As System.Web.UI.WebControls.CheckBox
Dim strBoardType As String
Dim strBoardID As String

lblSelect.Text = "<br>You selected the Following items:<br><br>"
lblStatus.Text=""
For Each myDataGridItem In MyDataGrid.Items
chkSelected = myDataGridItem.FindControl("chkSelection")
If chkSelected.Checked Then
lblSelect.visible=true
strBoardType= CType(myDataGridItem.FindControl("lblBoardType"), Label).Text
strBoardID = CType(myDataGridItem.FindControl("hdnBoardid"), Label).Text
lblStatus.Text += "The id is <b>" & strBoardType & "</b>"
lblStatus.Text += " and the id is <b>" & strBoardID & "</b><br>"
else
lblSelect.visible=false
End If
Next
End Sub
</script>
<html>
<head><title>DataGrid_CheckBox.aspx</title></head>
<body>
<link rel="stylesheet" href="css.css" type="text/css">
<form runat="server">
<TABLE style="BORDER-COLLAPSE: collapse" borderColor="WHITE" BgColor="#e4eaf2" cellSpacing="0" cellPadding="0" width="300" align="left" border="1">
<TR>
<TD>
<input type="button" id="btnSelect" OnServerClick="btnSelect_OnClick" value="Selected_ID" runat="server">
</td>
</TR>
<tr><td>
<asp:DataGrid id="MyDataGrid"
width="300"
Runat="server"
AllowPaging="true"
pageSize="5"
OnPageIndexChanged="Mydatagrid_PageIndexChanged"
cellPadding="3"
AutoGenerateColumns="false"
HeaderStyle-BackColor="#ff0000"
HeaderStyle-Font-Bold="True"
HeaderStyle-Font-Name="Verdana"
HeaderStyle-Font-Size="13px"
HeaderStyle-ForeColor="#ffffff"
ItemStyle-BackColor=Beige
ItemStyle-Font-Name="verdana"
ItemStyle-Font-Size="13px"
>
<PagerStyle Mode="NumericPages"
Font-Bold="true"
BackColor="#FFCC99"
HorizontalAlign="right"
Font-Size="Large"
>
</PagerStyle>
<Columns>
<asp:TemplateColumn HeaderStyle-HorizontalAlign=Center HeaderText="X">
<ItemTemplate>
<asp:Checkbox ID="chkSelection" Runat=server />
<asp:Label ID="hdnBoardid" Visible="False" Text='<%# DataBinder.Eval(Container.DataItem, "id") %>' Runat=server />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<asp:Label ID="lblBoardType" Text='<%# DataBinder.Eval(Container.DataItem, "id") %>' Runat=server />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</td></tr>
<tr><td>
<asp:Label ID="lblSelect"
Font-Name="verdana"
Font-Size="12px"
ForeColor="#ff0000"
Runat=server
enableviewstate="false"/>
<asp:Label ID="lblStatus"
Font-Name="verdana"
Font-Size="12px"
ForeColor="#ff0000"
Runat=server
enableviewstate="false"/>
</td></tr>
</table>
</form>
</body>
</html>
nova2001 2003-12-24
  • 打赏
  • 举报
回复
liuvb(★予人玫瑰 手有留香★) 提供的是标准方法
liuvb 2003-12-24
  • 打赏
  • 举报
回复
参考一下:
for( int i = 0; i < searchproDataGrid.Items.Count; i++ )
{
CheckBox chk = (CheckBox)searchproDataGrid.Items[i].FindControl("Check1");
if( chk.Checked == true )
{
.......

}
huazaiboy 2003-12-24
  • 打赏
  • 举报
回复
参考一下下面的算法,只需把datagrid控件换成reperter控件:
for (int i = 0; i < grdPayments.Items.Count; i++)
{
DataGridItem dgrdIItem = grdPayments.Items[i];
CheckBox chkCheckBox = (CheckBox)dgrdIItem.FindControl("chkPayment");
if (chkCheckBox.Checked)
{
intSequence = Common.Utility.StringToInteger( dgrdIItem.Cells[1].Text );
try
{
for(int j=0; j < dtPayments.Rows.Count; j++)
{
if ( dtPayments.Rows[j]["Sequence"].ToString() == Convert.ToString( intSequence ) )
{
dtPayments.Rows[j].Delete();
break;
}
}
}
catch
{
Response.Redirect("../showmessage.aspx?code=6906");
}
}
}
sjc0 2003-12-24
  • 打赏
  • 举报
回复
Repeater1_ItemDataBound中
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
CheckBox ch =(CheckBox)this.message.FindControl("yn");
}
acewang 2003-12-24
  • 打赏
  • 举报
回复
foreach (RepeaterItem ri in message.Items)
{
CheckBox ch =(CheckBox)ri.FindControl("yn");
if (ch!=null)
{
//你的操作
}
}
roc_gw 2003-12-24
  • 打赏
  • 举报
回复
?怎么做?
caoit 2003-12-24
  • 打赏
  • 举报
回复
少一个循环了,
roc_gw 2003-12-24
  • 打赏
  • 举报
回复
我只想读出在Repeater里的CheckBox的值
roc_gw 2003-12-24
  • 打赏
  • 举报
回复
CheckBox确实是服务器控件。如何看出FindControl是否搜索到CheckBox子控件
799538 2003-12-24
  • 打赏
  • 举报
回复
请检查两个问题:
1.首先你的代码应该是:
if (ch!=null && ch.Checked)
{
qq="1";
}
else
{
qq="0";
}
2.应该确定你的CheckBox是不是服务器控件(是否有Runat=server?),如果仅仅是一个HTML客户端控件,是永远不能从FindControl里找到的,因为FindControl仅搜索的是所有message控件的他的所有为服务器控件的子控件。
acewang 2003-12-24
  • 打赏
  • 举报
回复
你具体想实现什么功能
acewang 2003-12-24
  • 打赏
  • 举报
回复
没有找到CheckBox就引用他的属性,所以会报错

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧