Simple: look at the error message:
Input array is longer than the number of columns in this table.
It's pretty clear.
You are trying to add two columns of data to a table that has - at most - one column. Since the system doesn't know what to do with the rest of it, it throws it away.
Use the debugger: put a breakpoint on the line
dr.ItemArray = new object[] { 0, "--Select--" };
And look at
dt
carefully. How many columns does it have? What are they? What do they contain?
Probably, you are calling the wrong SP, or it doesn't return what you think it does - but I'd suspect that "Get all bill numbers" would return a single column of data, myself.