Thanks! That works, though the ProgressDisplayId is ugly and fragile.
<kw:UploadProgressElement ID="CurrentFileName" ProgressDisplayId="ctl00_ctl00_MainContent_TheSlickUploadControl_progressDisplay" runat="server" Element="CurrentFileName" /> <kw:UploadProgressElement ID="CurrentFileIndex" ProgressDisplayId="ctl00_ctl00_MainContent_TheSlickUploadControl_progressDisplay" runat="server" Element="CurrentFileIndex" /> <kw:UploadProgressElement ID="FileCount" ProgressDisplayId="ctl00_ctl00_MainContent_TheSlickUploadControl_progressDisplay" runat="server" Element="FileCount" />
Binding to the control's ClientID is a bit cleaner.
<kw:UploadProgressElement ID="CurrentFileName" ProgressDisplayId='<%# TheSlickUploadControl.ClientID + "_progressDisplay" %>' runat="server" Element="CurrentFileName" /> <kw:UploadProgressElement ID="CurrentFileIndex" ProgressDisplayId='<%# TheSlickUploadControl.ClientID + "_progressDisplay" %>' runat="server" Element="CurrentFileIndex" /> <kw:UploadProgressElement ID="FileCount" ProgressDisplayId='<%# TheSlickUploadControl.ClientID + "_progressDisplay" %>' runat="server" Element="FileCount" />
Alternatively, I had manually rendered the elements because they are simple span tags.
<div><%= String.Format("Currently uploading: {0}, file {1} of {2}.", "<span id='CurrentFileName'</span>",
"<span id='CurrentFileIndex'></span>", "<span id='FileCount'></span>")%></div>
<div style="display: none"> <kw:UploadProgressElement ID="CurrentFileName" ClientIDMode="Static" runat="server" Element="CurrentFileName" /> <kw:UploadProgressElement ID="CurrentFileIndex" ClientIDMode="Static" runat="server" Element="CurrentFileIndex" /> <kw:UploadProgressElement ID="FileCount" ClientIDMode="Static" runat="server" Element="FileCount" />
</div>
With my approach, I have to use static client ids, which are duplicates. Duplicate IDs are not valid HTML. My approach is also ugly and fragile.
I'll use your approach, which overall is more robust. Thanks again.